PythonGUI编程(3) ---- Options选项 Entry单行文本框 Text多行文本框

简介: PythonGUI编程(3) ---- Options选项 Entry单行文本框 Text多行文本框

Options


通过Options设置组件的属性,从而控制各个组件的状态

设置 Options三种方式


  1. 在创建对象时,使用关键字参数


label01 = Label(text='程序员',width=10,height=2,bg='black',fg='white')


  1. 创建对象后使用字典索引的方式


label01['bg'] = 'black'


  1. 创建对象对象后使用configfig方式


label01.config(fg = 'red')


Entry单行文本框


Entry用来接收一行字符串的控件,如果用户输入的文字长度长于Entry控件的宽度时文字会自动往后滚

想输入多行文本,需要使用Text控件


下面使用单行文本框实现登录注册

from tkinter import *
from tkinter import messagebox
# Entry单行文本框
class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)  # super() 代表的是父类的定义,而不是父类的对象
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        """创建登录界面的的组件"""
        self.label01 = Label(self,text='用户名')
        self.label01.pack()  # 布局管理器
        # StringVar变量绑定到指定的组件
        # StringVar变量的值发生变化,组件内容发生变化
        # 组件内容发生变化,StringVar变量的值也发生变化
        v1 = StringVar()  # 字符串
        self.entry01 = Entry(self,textvariable=v1)
        self.entry01.pack()
        # 创建密码框
        self.label02 = Label(self,text='密码')
        self.label02.pack()
        v2 = StringVar()  # 字符串
        self.entry02 = Entry(self, textvariable=v2,show='*')
        self.entry02.pack()
        # 设置默认值
        v1.set("admin")
        # v1.get() 获取中v1的值
        Button(self,text='登录',command=self.login).pack()
    def login(self):
        username = self.entry01.get()
        pwd = self.entry02.get()
        # 从数据库中获取用户表名和密码进行比对
        print("用户名"+username)
        print("用户名"+pwd)
        messagebox.showinfo("Message","登录成功")
if __name__ == '__main__':
    root = Tk()
    root.geometry("600x400+300+300")
    app = Application(master=root)
    root.mainloop()


adaf8de43f94408689db0275aa448489.png


Text多行文本框


Text的主要用于显示多行文本,还可以显示网页链接,图片,html页面甚至CSS样式表,添加组件等


因此常被当做简单的文本处理器,文本编辑器或者网页浏览器来使用,IDLE就是Text组件构成的


使用Text多行文本框实现一个小的记事本功能

实现了一些小功能,添加文本,返回文本,添加图片,添加组件,控制文本,并设置文本的底色


from tkinter import *
from tkinter import messagebox
class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)  # super() 代表的是父类的定义,而不是父类的对象
        self.master = master
        self.photo = ''
        self.pack()
        self.createWidget()
    def createWidget(self):
        """多行文本框的组件"""
        # 宽度20个字母(10个汉字)高度一行
        self.w1 = Text(root,width=40, height=12,bg='gray')
        self.w1.pack()  # 布局管理器
        self.w1.insert(1.0,'0123456789\nasdfdasf')  # 1.0 第一行第0列 行从1开始数,列从0开始输
        self.w1.insert(2.3, 'asdfasdfasdf\nasdfdasf\n') # 2.3第2行3列
        Button(self,text='重复插入文本',command=self.insterText).pack(side='left') # 布局管理器,按钮的位置
        Button(self,text='返回文本',command=self.returnText).pack(side='left')
        Button(self, text='添加图片', command=self.addImage ).pack(side='left')
        Button(self, text='添加组件', command=self.addWidget).pack(side='left')
        Button(self, text='通过tag精准空控制文本', command=self.testTag).pack(side='left')
    def insterText(self):
        # 表示在光标处插入
        self.w1.insert(INSERT,' Gaoqi ')
        # END索引好表示在最后插入
        self.w1.insert(END,'[sxt]')
    def returnText(self):
        # Indexes(索引)是用来指向Text组件中文本的位置
        # Text的组件索引也是实际字符之间的位置
        # 核心:行号从1开始列号从0开始
        print(self.w1.get(1.2,1.6))  # 第一行第二列到第一行第六列
        self.w1.insert(1.8,'gaoqi')  # 插入
        print("所有文本内容:\n" + self.w1.get(1.0,END))  # 从开头到结尾
    def addImage(self):
        # global photo
        self.photo = PhotoImage(file='py.png')
        self.w1.image_cget(END,image=self.photo)
    def addWidget(self):
        b1 = Button(self.w1,text='按钮')
        # 在text中创建组件的命令
        self.w1.window_create(INSERT,window=b1)
    def testTag(self):
        self.w1.delete(1.0,END)  # 删除数据
        self.w1.insert(INSERT,'good good good good\n第二行的文本\n第三行的文本')
        self.w1.tag_add('good',1.0,1.9) # 做标记
        # 设置做标记的文本,根据标记名选择
        self.w1.tag_config('good',background='yellow',foreground='red')
        self.w1.tag_add("baidu",2.3,2.5)
        self.w1.tag_config("baidu",underline=True)
        self.w1.tag_bind("baidu",'<Button-1>',self.webshow)
    def webshow(self,event): # 传入事件
        print("打开浏览器")
if __name__ == '__main__':
    root = Tk()
    root.geometry("600x400+300+300")
    app = Application(master=root)
    root.mainloop()

013fa2e39ac24b40b6981a24f4aabb4e.png



相关文章
|
Python
【Python】 已解决:NameError: name ‘python‘ is not defined
【Python】 已解决:NameError: name ‘python‘ is not defined
2647 8
|
Python
python如何获取代码运行时间?
【6月更文挑战第3天】python如何获取代码运行时间?
272 3
|
数据可视化 前端开发 JavaScript
Echarts+JS实现数据分析可视化大屏!!附源码!!
Echarts+JS实现数据分析可视化大屏!!附源码!!
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
Ubuntu 安全 测试技术
Ubuntu 22.04 Samba 安装和配置
SMB(Server Message Block)是一种跨平台的文件共享协议,它允许不同操作系统之间的文件和打印机共享。在本文中,我们将详细介绍如何在 Ubuntu 服务器上部署和配置一个 SMB 服务器,并涵盖多通道配置、性能测试、安全最佳实践以及一些常见问题。【8月更文挑战第1天】
2659 1
|
测试技术 iOS开发 MacOS
Python和Web--使用Web框架之Flask简单用例
Python和Web--使用Web框架之Flask简单用例
109 0
|
算法 定位技术 C++
A* 算法详解(超级详细讲解,附有大图)
A* 算法详解(超级详细讲解,附有大图)
9109 0
|
存储 Ubuntu 关系型数据库
Docker从入门到精通:ubuntu系统安装docker
本文介绍了Docker的安装过程。首先,文章简述了Docker的组成部分:镜像(如模板用于创建容器服务)、容器(运行应用的独立实体)和仓库(存储镜像的库)。接着,针对Ubuntu系统,详细阐述了卸载旧版本Docker、更新软件包、安装依赖、添加Docker官方GPG密钥和软件源、安装Docker以及配置用户组的步骤。最后,通过启动Docker、验证安装是否成功(运行`hello-world`镜像)和查看Docker版本来确认安装完成。
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
机器学习/深度学习 算法 数据挖掘
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
247 0

热门文章

最新文章