【Python】【Tkinter】图形界面设计(GUI)

您所在的位置:网站首页 python设计图形用户界面 【Python】【Tkinter】图形界面设计(GUI)

【Python】【Tkinter】图形界面设计(GUI)

2024-02-02 18:38| 来源: 网络整理| 查看: 265

一. 窗口创建及常见函数 from tkinter import tk #初始化tk() root = tk.Tk() #设置标题 root.title('Python GUI Learning') #设置窗口大小 root.geometry('380x300') #设置窗口是否可变长、宽,True:可变,False:不可变 root.resizable(width=False, height=True) #…… 设置控件 #进入消息循环 root.mainloop()

常见函数

函数含义root.title设置窗口的标题root.resizable(0, 0)窗口大小可调性,分别表示x,y方向的可变性root.geometry(“250x150+10+20”)设置窗口大小root.quit()退出root.update()刷新页面(界面显示一次后直接退出结束程序)root.update_idletasks()刷新页面root.mainloop()窗口循环显示root.iconbitmap(logo.ico)设置窗口图标root.config(background = “pink”)设置背景颜色root.resizable(False,False)窗口的高度和宽度是否可变window.minsize(100,100)窗口的最小缩放window.maxsize(600,333)窗口最大缩放window.overrideredirect(True)设置关闭窗口按钮是否显示window.attributes(“-alpha”,0.9)设置窗口的透明度,1为不透明,0为完全透明root.attributes(“-toolwindow”,True)True 只有退出按钮,也没有图标;False 正常的窗体样式root.attributes(“-fullscreen”, True)True 全屏;False 正常显示root.attributes(“-topmost”, True)True 所有窗口中处于最顶层;False 正常显示root.overrideredirect(True)True 没有工具栏按钮;False 正常显示root.state(“zoomed”)启动窗口最大化root.withdraw()窗口隐藏,取消用deiconify()方法root.iconify()窗口最小化root.deiconify()还原窗口window.protocol(“协议名”,回调函数)启用协议处理机制,常用协议有 WN_DELETE_WINDOW,当用户点击关闭窗口时,窗口不会关闭,而是触发回调函数。

🔷锁定窗口大小 锁定宽度: 窗口名字.resizable(False, True) 锁定高度: 窗口名字.resizable(True, False) 锁定全部: 窗口名字.resizable(False, False) 🔷

二. 几何管理

🔷Tkinter有特定的几何状态管理方法,管理整个控件区域组织,以下是公开的几何管理类:包,网格,位置;

(一) pack() 属性说明after将组件置于其他组件之后before将组件置于其他组件之前ancho组件的对齐方式,顶对齐’n’,底对齐’s’,左’w’,右’e’side组件在主窗口的位置,可以为’top’,‘bottom’,‘left’,‘right’(使用时tk.TOP,tk.LEFT)fill填充方式 (Y: 垂直; X: 水平;BOTH: 水平+垂直),是否在某个方向充满窗口expand1可扩展,0不可扩展,代表控件是否会随窗口缩放 (二) grid() 属性说明column组件所在的列起始位置(列号)columnspan组件的列宽;跨列数(行跨列)row组件所在的行起始位置(行号)rowspan组件的行宽;rowspam=3 跨3行(列跨行)sticky对齐方式:NSEW(北南东西)上下左右padx、padyx方向间距、y方向间距(padx=5) (三) place() 属性说明anchor组件对齐方式;n, ne, e, se, s, sw, w, nw, or center ; (‘n’==N)x组件左上角的x坐标;y组件左上角的y坐标;relx:组件左上角相对于窗口的x坐标,应为0-1之间的小数;图形位置相对窗口变化rely组件左上角相对于窗口的y坐标,应为0-1之间的小数;width组件的宽度;heitht组件的高度;relwidth组件相对于窗口的宽度,0-1之间的小数,图形宽度相对窗口变化;relheight组件相对于窗口的高度,0-1之间的小数; 三. 控件详解 (一) Label标签控件

🔷标签控件被用于显示文本和图像。标签可包含多行文本,但只能用一种字体。 🔷注:你如果需要显示一行或多行文本且不允许用户修改,你可以使用 Label 组件 🔷语法格式:

label=tk.Label(root,option)

🔷option:可选项(即标签的可设置的属性),这些选项可以用键-值的形式设置,以逗号分隔;

可选项说明应用text设置文本内容,可以包含换行符(\n)text=‘辞职人:正信’font1.设置字体、字号、样式:     bold(粗体) 默认值为normal(正常粗细);    italic(斜体) 默认值为 roman(正常直立);    underline(下划线),overstrike(删除线))。2. 一个 Label 只能设置一种字体3. 默认值由系统指定font=(‘黑体’, 18, bold), font=18underline1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 2. 默认值是 -13. 例如设置为 1,则说明在 Button 的第 2 个字符处画下划线underline=1fg前景色fg=“pink”bg背景色bg=“pink”anchor1. 控制文本(或图像)在 Label 中显示的位置2. 默认为center,可选值为(n,s,w,e,ne,nw,sw,se,center)anchor=“center”justify1. 定义如何对齐多行文本2. 使用 “left”,“right” 或 “center”3. 注意,文本的位置取决于 anchor 选项4. 默认值是 “center”justify=“CENTER”width1. 设置 Label 的宽度2. 如果 Label 显示的是文本,那么单位是文本单元3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元)4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出宽度width=300height1. 设置 Label 的高度2. 如果 Label 显示的是文本,那么单位是文本单元3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元)4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出高度height=200image1. 指定 Label 显示的图片2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象photo = tk.PhotoImage(file=“python.gif”)w = tk.Label(root, image=photo).pack()padx1. 指定 Label 水平方向上的额外间距(内容和边框间)2. 单位是像素padx=50pady1. 指定 Label 垂直方向上的额外间距(内容和边框间)2. 单位是像素pady=50compound1. 控制 Label 中文本和图像的混合模式2. 默认情况下,如果有指定位图或图片,则不显示文本3. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像)4. 如果该选项设置为 “bottom”,“left”,“right” 或 “top”,那么图像显示在文本的旁边(如 “bottom”,则图像在文本的下方)5. 默认值是 NONEcompound=‘center’relief1. 指定边框样式2. 默认值是 “flat”3. 另外你还可以设置 “groove”, “raised”, “ridge”, “solid” 或者 “sunken”relief=‘flat’bd1. 指定 Label 的边框宽度2. 默认值由系统指定,通常是 1 或 2 像素textvariable输入框内值,也称动态字符串,使用 StringVar() 对象来设置dstr = tk.StringVar()textvariable=dstr (二) Button按钮控件

🔷按钮可以添加文本和图像。当按钮按下时,可以执行指定的函数。 🔷语法格式:

button=tk.Button(root,option) 可选项说明state按钮状态选项,状态有’disabled’, ‘normal’, ‘active’activebackground当鼠标放上去时,按钮的背景色activeforeground当鼠标放上去时,按钮的前景色bd按钮边框的大小,默认为 2 个像素bg按钮的背景色fg按钮的前景色(按钮文本的颜色)font文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underlineheight按钮的高度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小)width按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小)image按钮上要显示的图片,图片必须以变量的形式赋值给image,图片必须是gif格式。justify显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTERpadx按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离pady按钮在y轴方向上的内边距(padding)relief边框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。wraplength限制按钮每行显示的字符的数量,超出限制数量后则换行显示underline下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引text按钮的文本内容command按钮关联的函数,当按钮被点击时,执行该函数anchor控制文本所在的位置,默认为中心位置(CENTER) (三) Text文本框控件

🔷Text 控件用于显示和编辑多行文本,而 Entry 控件则适合处理单行文本。 🔷语法格式:

text=tk.Text(root,option) 可选项说明应用height设置文本框的高度,高度值每加1则加一行height=2width设置文本框的宽度,宽度值每加1则加一个字节width=10insert文本框插入数据,可以指定插入数据的位置(指定默认数据)text.insert(‘0.0’, ‘12’)delete删除文本框中的数据,可以通过数据位置,指定删除的数据text.delete(“0.0”)删除一个text.delete(“0.1”, “end”)删除全部get获取文本框中的数据,可以通过数据位置,指定获取的数据text.get(‘0.0’, ‘end’)relief文本框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGErelief=“ridge”bd设置文本框的边框大小,值越大边框越宽bd=5bg设置文本框默认背景色bg=‘pink’fg设置文本框默认前景色,即字体颜色fg=‘#ffffff’font文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underlinefont=(‘黑体’, 18, bold)state文本框状态选项,状态DISABLED/NORMAL,DISABLED状态文本框无法输入,NORMAL状态可以正常输入state=‘disabled’highlightcolor设置文本框点击后的边框颜色highlightcolor=‘yellow’highlightthickness设置文本框点击后的边框大小highlightthickness=3image_create插入图片photo = tk.PhotoImage(file=“mm.gif”)text.image_create(‘1.0’, image=photo)exportselection表示被选中的文本是否可以被复制到剪切板,若是 False 则表示不允许默认值为 Trueinsertbackground设置插入光标的颜色默认为 BLACKselectbackground指定被选中文本的背景颜色默认由系统决定selectforeground指定被选中文本的字体颜色默认值由系统指定textvariable输入框内值,也称动态字符串,使用 StringVar() 对象来设置dstr = tk.StringVar()textvariable=dstr (四) Entry输入控件

🔷Entry 控件作用就是允许用户输入内容,从而实现 GUI 程序与用户的交互,比如当用户登录软件时,输入用户名和密码,此时就需要使用 Entry 控件。 🔷语法格式:

entry=tk.Entry(root,option) 可选项说明width设置文本框的宽度,宽度值每加1则加一个字节insert文本框插入数据,可以指定插入数据的位置delete删除文本框中的数据,可以通过数据位置,指定删除的数据get获取文本框中的数据,可以通过数据位置,指定获取的数据relief文本框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。bd设置文本框的边框大小,值越大边框越宽bg设置文本框默认背景色fg设置文本框默认前景色,即字体颜色font文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underlinestate文本框状态选项,状态有DISABLED/NORMAL,DISABLED状态文本框无法输入,NORMAL状态可以正常输入highlightcolor设置文本框点击后的边框颜色highlightthickness设置文本框点击后的边框大小selectbackground选中文字的背景颜色selectborderwidth选中文字的背景边框宽度selectforeground选中文字的颜色show指定文本框内容以何种样式的字符显示,比如密码可以将值设为 show=“*”textvariable输入框内值,也称动态字符串,使用 StringVar() 对象来设置dstr = tk.StringVar()textvariable=dstr 四. 打包成exe文件 (一) 纯文本打包

🔷安装(在终端输入以下命令,安装包文件): pip install pyinstaller 🔷打包(在终端输入以下命令,进行打包): pyinstaller -F -w hello.py

pyinstaller -F hello.py # 执行exe文件时会出现cmd弹框 pyinstaller -F -w hellopy # 执行exe文件时没有出现cmd弹框 pyinstaller -F -i hello.py # 执行exe文件时没有弹框 (二) 带图标打包

1.先将所需要的图标转换为.py文件下的base64数组格式

import base64 open_icon = open("qq.ico","rb") #qq.icon为你要放入的图标 b64str = base64.b64encode(open_icon.read()) #以base64的格式读出 open_icon.close() write_data = "img=%s" % b64str f = open("qq.py","w+") #将上面读出的数据写入到qq.py的img数组中 f.write(write_data) f.close()

2.将qq.py导入到你的主文件中

import tkinter as tk from qq import img def setIcon(): tmp = open("tmp.ico", "wb+") tmp.write(base64.b64decode(img)) # 写入到临时文件中 tmp.close() root.iconbitmap("tmp.ico") # 设置图标 os.remove("tmp.ico") # 删除临死图标 root = tk.Tk() root.title("C语言中文网") root.geometry('450x150+100+100') root.resizable(0,0) setIcon() # 应用函数 # 显示窗口 root.mainloop()

在这里插入图片描述 3.打包 可以参考上文《纯文本打包》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3