tkinter是Python自带的GUI库,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法
tkinter安装:python内置库不需要安装可以直接使用
窗口常用控件:
控件类型 | 控件名称 | 控件作用 |
---|---|---|
Button | 按钮 | 点击按钮时触发/执行一些事件(函数) |
Canvas | 画布 | 提供绘制图,比如直线、矩形、多边形等 |
Checkbutton | 复选框 | 多项选择按钮,用于在程序中提供多项选择框 |
Entry | 文本框输入框 | 用于接收单行文本输入 |
Frame | 框架(容器)控件 | 定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器 |
Lable | 标签控件 | 用于显示单行文本或者图片 |
LableFrame | 容器控件 | 一个简单的容器控件,常用于复杂的窗口布局。 |
Listbox | 列表框控件 | 以列表的形式显示文本 |
Menu | 菜单控件 | 菜单组件(下拉菜单和弹出菜单) |
Menubutton | 菜单按钮控件 | 用于显示菜单项 |
Message | 信息控件 | 用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能 |
messageBox | 消息框控件 | 定义与用户交互的消息对话框 |
OptionMenu | 选项菜单 | 下拉菜单 |
PanedWindow | 窗口布局管理组件 | 为组件提供一个框架,允许用户自己划分窗口空间 |
Radiobutton | 单选框 | 单项选择按钮,只允许从多个选项中选择一项 |
Scale | 进度条控件 | 定义一个线性“滑块”用来控制范围,可以设定起始值和结束值,并显示当前位置的精确值 |
Spinbox | 高级输入框 | Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值 |
Scrollbar | 滚动条 | 默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas等控件配合使用 |
Text | 多行文本框 | 接收或输出多行文本内容 |
Toplevel | 子窗口 | 在创建一个独立于主窗口之外的子窗口,位于主窗口的上一层,可作为其他控件的容器 |
窗口常用方法:
函数 | 说明 |
---|---|
window.title(“my title”) | 接受一个字符串参数,为窗口起一个标题 |
window.resizable() | 是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(False,False)时不可更改 |
window.geometry() | 设定主窗口的大小以及位置,当参数值为 None 时表示获取窗口的大小和位置信息。 |
window.quit() | 关闭当前窗口 |
window.update() | 刷新当前窗口 |
window.mainloop() | 设置窗口主循环,使窗口循环显示(一直显示,指导窗口被关闭) |
window.iconbitmap() | 设置窗口左上角的图标(图标是.ico文件类型) |
window.config(background =“red”) | 设置窗口的背景色为红色,也可以接受 16 进制的颜色值 |
window.minsize(50,50) | 设置窗口被允许调整的最小范围,即宽和高各50 |
window.maxsize(400,400) | 设置窗口被允许调整的最大范围,即宽和高各400 |
window.attributes(“-alpha”,0.5) | 用来设置窗口的一些属性,比如透明度(-alpha)、是否置顶(-topmost)即将主屏置于其他图标之上、是否全屏(-fullscreen)全屏显示等 |
window.state(“normal”) | 用来设置窗口的显示状态,参数值 normal(正常显示),icon(最小化),zoomed(最大化) |
window.withdraw() | 用来隐藏主窗口,但不会销毁窗口。 |
window.iconify() | 设置窗口最小化 |
window.deiconify() | 将窗口从隐藏状态还原 |
window.winfo_screenwidth() window.winfo_screenheight() | 获取电脑屏幕的分辨率(尺寸) |
window.winfo_width() window.winfo_height() | 获取窗口的大小,同样也适用于其他控件,但是使用前需要使用 window.update() 刷新屏幕,否则返回值为1 |
window.protocol(“协议名”,回调函数) | 启用协议处理机制,常用协议有 WN_DELETE_WINDOW,当用户点击关闭窗口时,窗口不会关闭,而是触发回调函数。 |
import tkinter
# 实例化Tk()
root_window = tkinter.Tk()
# 设置窗口title
root_window.title('TITLE')
# 设置窗口大小:宽x高,注,此处不能为 "*",必须使用 "x"
root_window.geometry('450x300')
# 更改左上角窗口的的icon图标,加载logo标
root_window.iconbitmap('D:/img/favicon.ico')
# 设置主窗口的背景颜色,颜色值可以是英文单词,或者颜色值的16进制数,除此之外还可以使用Tk内置的颜色常量
root_window["background"] = "#FFFFFF"
#进入主循环,显示主窗口
root_window.mainloop()
# 添加按钮,以及按钮的文本,并通过command 参数设置关闭窗口的功能
button = tkinter.Button(root, text="关闭", command=root.quit)
# 将按钮放置在主窗口内
button.place(x=200, y=260, width=200, height=30)
运行结果:
略
Button 控件的常用属性如下:
属性 | 说明 |
---|---|
anchor | 控制文本所在的位置,默认为中心位置(CENTER) |
activebackground | 当鼠标放在按钮上时候,按妞的背景颜色 |
activeforeground | 当鼠标放在按钮上时候,按钮的前景色 |
bd | 按钮边框的大小,默认为 2 个像素 |
bg | 按钮的背景色 |
command | 用来执行按钮关联的回调函数。当按钮被点击时,执行该函数 |
fg | 按钮的前景色 |
font | 按钮文本的字体样样式 |
height | 按钮的高度 |
highlightcolor | 按钮控件高亮处要显示的颜色 |
image | 按钮上要显示的图片 |
justify | 按钮显示多行文本时,用来指定文本的对齐方式,参数值有 LEFT/RIGHT/CENTER |
padx/pady | padx 指定 x 轴(水平方向)的间距大小,pady 则表示 y轴(垂直方向)的间距大小 |
ipadx/ipady | ipadx 指标签文字与标签容器之间的横向距离;ipady 则表示标签文字与标签容器之间的纵向距离 |
state | 设置按钮的可用状态,可选参数有NORMAL/ACTIVE/DISABLED,默认为 NORMAL |
text | 按钮控件要显示的文本 |
# 新建账号文本框标签
entry = tkinter.Entry(root)
# 布局
entry.place(x=60, y=40, width=200, height=30)
# 获取单行文本框的值
entry.get()
# 插入默认文本
user_entry.insert(0, '请输入账号')
# delete清空输入框 第0个字符开始;END最后一个字符结束
text.delete("1.0", "end")
Entry 控件的常用属性如下:
略
# 创建一个文本控件
# width 一行可见的字符数;height 显示的行数
text = Text(root, width=50, height=30, undo=True,autoseparators=False)
# 布局
text.place(x=10, y=10, width=200, height=30)
# 获取多行文本框的值
entry.get()
# 插入文本,INSERT 光标处插入;END 末尾处插入
text.insert(INSERT, '请输入文本')
# delete清空输入框 第1行0个字符开始;END 尾行最后一个字符结束
text.delete("1.0", "end")
win.mainloop()
def mess():
print(rad_value.get())
# IntVar() 用于处理整数类型的变量
rad_value = ttk.IntVar()
# 根据单选按钮的 value 值来选择相应默认的选项
rad_value.set(0)
# 使用 variable 参数来关联 IntVar() 的变量 v
rad = ttk.Radiobutton(root, text="A", variable=rad_value, value=1, command=mess)
rad.place(x=200, y=70, width=100, height=50)
rad = ttk.Radiobutton(root, text="B", variable=rad_value, value=2, command=mess)
rad.place(x=200, y=120, width=100, height=50)
rad = ttk.Radiobutton(root, text="C", variable=rad_value, value=3, command=mess)
rad.place(x=200, y=170, width=100, height=50)
rad = ttk.Radiobutton(root, text="D", variable=rad_value, value=4, command=mess)
rad.place(x=200, y=230, width=100, height=50)
8.多选框 Checkbutton
9.文件选择对话框 tkinter.filedailog
10.子窗口Toplevel
11.菜单控件 Menu
12.下拉菜单 Toplevel
ttkbootstrap 是python的三方GUI库
pip install ttkbootstrap
import ttkbootstrap as ttk
from ttkbootstrap.dialogs.dialogs import Messagebox
# from ttkbootstrap.constants import *
def mess():
print('点击弹出消息')
msg = Messagebox.okcancel(title="提示", message='是否要退出')
print(msg)
import ttkbootstrap as ttk
gress = ttk.Progressbar(root, length=200, mode='determinate')
gress.place(x=10, y=350, width=500, height=50)
gress['maximum'] = 100
gress['value'] = 50