#Tkinter# Python GUI库
志扬工作室
共 7416字,需浏览 15分钟
·
2023-07-01 03:29
“ 文章所涉及内容更多来自网络,在此声明,并感谢知识的贡献者!”
tkinter简介—
tkinter简介
tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学习GUl编程。
—
tkinter官网https://docs.python.org/3/library/tkinter.html
ttk 子模块的官方文档:
https://docs.python.org/3.7/library/tkinter.ttk.html
tkinter布局
—
tkinter布局Tkinter 提供了布局功能,主要包含 pack、grid 和 place 三种布局方法。
pack 布局 方位布局
Grid布局 网格布局
grid 布局法就是将屏幕切成表格的样子,通过横向坐标 row 和纵向坐标 column 来指定元素的位置。第一行标记为 0,第一列也标记为 0。
Place布局 坐标布局
直接指定元素在父元素中的坐标值,单位是像素。
—
tkinter的组件包含以下几种
按钮组件
Button 按钮组件
RadioButton 单选框组件
CheckButton 选择按钮组件
Listbox 列表框组件
tkinter.Button(用于存放的父组件,属性参数...)
属性:
anchor 设置按钮中文字的对其方式,相对于按钮的中心位置
background(bg) 设置按钮的背景颜色
foreground(fg) 设置按钮的前景色(文字的颜色)
borderwidth(bd) 设置按钮边框宽度
cursor 设置鼠标在按钮上的样式
command 设定按钮点击时触发的函数
bitmap 设置按钮上显示的位图
font 设置按钮上文本的字体
width 设置按钮的宽度 (字符个数)
height 设置按钮的高度 (字符个数)
state 设置按钮的状态
text 设置按钮上的文字
image 设置按钮上的图片
文本输入框组件
Entry 单行文本框组件
Text 多行文本框组件
#单行文本
tkinter.Entry(用于存放的父组件,属性参数...)
#多行文本
tkinter.Text(用于存放的父组件,属性参数...)
属性:
background(bg) 设置文本框的背景色
foreground(bg) 设置文本框的前景色
borderwidth(bd) 设置文本输入框的边框
font 设置文本框中的字体
width 设置文本框的宽度(字符个数)
height 设置文本框的高度(字符个数),仅限于text
state 设置文本框的状态
selectbackground 选中文字时文本框的背景色
selectforeground 选中文字时文字的颜色
show 指定文本框显示的字符,若为*,则表示为密码框
textvariable 设置文本对应的变量,可以通过修改变量改变文字显示。必须使用tkinter.IntVar() 或 tkinter.StringVar()产生的变量 entry可以使用
标签组件
Label 标签组件,可以显示图片和文字
Message 标签组件,可以根据内容将文字换行
tkinter.Label(用于存放的父组件,属性参数...)
属性
anchor 设置文本相对于标签中心的位置
background 设置标签的背景色
foreground 设置标签的前景色
borderwidth 设置标签的边框宽度
width 设置标签的宽度(字符个数)
height 设置标签的高度(字符个数)
text 设置标签中文本内容
font 设置标签中文字的字体类型
bitmap 设置标签的现实的位图
image 设置标签中显示的图片
justify 是设置标签中多行文本的对其方式
textvariable 设置文本对应的变量,可以通过修改变量改变文字显示,必须使用tkinter.IntVar() 或者tkinter.StringVar()产生的变量
复合组件
thinter.Radiobutton(用于存放的父组件,属性参数...)
thinter.Checkbutton(用于存放的父组件,属性参数...)
属性
anchor 设置组件中文字的对其方式
background(bg) 指定组件的背景色。
borderwidth(bd) 指定组件边框的宽度。
bitmap 指定组件中的位图。
font 指定组件中文本的字体。
foreground(fg) 指定组件的前
height 指定组件的高度。
image 指定组件中的图片。
justify 指定组件中多行文本的对齐方式。
text 指定组件中的文本,可以 使用“\ n” 表示换行。
value 指定组件被选中后(单选框)
onvalue 组件勾选状态值(复选框)
offvalue 组件取消勾选状态的值(复选框)
variable 指定组件所关联的变量。需要使用tkinter. IntVar()或者tkinter. StringVar()创建的值
width 指定组件的宽度。
command 设置复选框操作的触发命令(复选框)
菜单组件
Menu 菜单组件
MenuButton 菜单按钮组件,可以使用Menu代替
thinter.Menu(用于存放的父组件,属性参数...)
background(bg) 正常的背景颜色显示在标签和指示器后面。
borderwidth(bd) 指标周围边界的大小。默认值为2像素。
cursor 如果将此选项设置为光标名称(箭头,点等),则鼠标光标将在检查按钮上方更改为该模式。
height 新框架的垂直尺寸。
highlightbackground 当框架没有焦点时,焦点的颜色突出显示。
highlightcolor 当框架具有焦点时,焦点突出显示的颜色。
highlightthickness 焦点亮点的厚度。
relief 使用默认值,relief = FLAT,检查按钮不会从背景中脱颖而出。您可以将此选项设置为任何其他样式
width checkbutton的默认宽度取决于所显示的图像或文字的大小。你可以设置此选项的字符数和checkbutton的,总是有许多字符的空间。
滚动条组件
scale 滑块组件
Scrollbar 滚动条组件
其他组件
Canvas 画布组件
Frame 框架组件,将多个组件编组
Toplevel 创建子窗口容器组件
tkinter事件
—
Tkinter事件鼠标事件类型
<Button-1> 按下了鼠标左键 <ButtonPress-1>
<Button-2> 按下了鼠标中键 <ButtonPress-2>
<Button-3> 按下了鼠标右键 <ButtonPress-3>
<Enter> 鼠标进入组件区域
<Leave> 鼠标离开组件区域
<ButtonRelease-1> 释放了鼠标左键
<ButtonRelease-2> 释放了鼠标中键
<ButtonRelease-3> 释放了鼠标右键
<B1-Moion> 按住鼠标左键移动
<B2-Moion> 按住鼠标中键移动
<B3-Moion> 按住鼠标右键移动
<Double-Button-1> 双击鼠标左键
<Double-Button-2> 双击鼠标中键
<Double-Button-3> 双击鼠标右键
<MouseWheel> 滚动鼠标滚轮
键盘事件类型
<KeyPress> 表示任何键盘按下
<KeyPress-A> 表示按下键盘A键 A可以设置为其他的按键
<Alt-KeyPress-A> 表示同时按下Alt和A键 A可以设置为其他的按键
<Control-KeyPress-A> 表示同时按下Ctrl和A键 A可以设置为其他的按键
<Shift-KeyPress-A> 表示同时按下Shift和A键 A可以设置为其他的按键
<Double-KeyPress-A> 表示双击键盘A键 A可以设置为其他的按键
<Lock-KeyPress-A> 表示开启大写之后键盘A键 A可以设置为其他的按键
<Alt-Control-KeyPress-A> 表示同时按下alt+Ctrl和A键 A可以设置为其他的按键
注意:键盘事件除了entry和text组件其他组件的事件最好绑定在主界面上
事件对象中包含的信息
x,y 当前触发事件时鼠标相对触发事件的组件的坐标值
x_root,y_root 当前触发事件时鼠标相对于屏幕的坐标值
char 获取当前键盘事件时按下的键对应的字符
keycode 获取当前键盘事件时按下的键对应的的ascii码
type 获取事件的类型
num 获取鼠标按键类型 123 左中右
widget 触发事件的组件
width/height 组件改变之后的大小和configure()相关
窗口和组件相关事件类型
Activate 当中组件由不可以用变为可用时 针对于state的变值
Deactivate 当组件由可用变为不可用时触发
Configure 当组件大小发生变化时触发
Destory 当组件销毁时触发
FocusIn 当组件获取焦点时触发 针对于Entry和Text有效
Map 当组件由隐藏变为显示时触发
UnMap 当组件由显示变为隐藏时触发
Perproty 当窗口属性发生变化时触发
事件绑定函数
组件.bind(‘事件类型’,事件函数)
为一个组件绑定一个操作
组件.bind_class(‘组件类型’,‘事件类型’,事件函数)
为一类组件绑定一个操作
组件类型就是创建组件的方法名 例如按钮组件:Button
组件.bind_all(‘事件类型’,事件函数)
为所有组件绑定一个操作(所有操作都会当作对主界面的操作)
tkinter模块
—
Tkinter模块提供 Tk 支持的模块包括:
tkinter
主 Tkinter 模块。
tkinter.colorchooser
让用户选择颜色的对话框。
tkinter.commondialog
本文其他模块定义的对话框的基类。
tkinter.filedialog
允许用户指定文件的通用对话框,用于打开或保存文件。
tkinter.font
帮助操作字体的工具。
tkinter.messagebox
访问标准的 Tk 对话框。
tkinter.scrolledtext
内置纵向滚动条的文本组件。
tkinter.simpledialog
基础对话框和一些便捷功能。
tkinter.ttk
在 Tk 8.5 中引入的带主题的控件集,提供了对应于 tkinter 模块中许多经典控件的现代替代。
附加模块:
_tkinter
一个包含低层级 Tcl/Tk 接口的二进制模块。它会被主 tkinter 模块自动导入,且永远不应被应用程序员所直接使用。它通常是一个共享库(或 DLL),但在某些情况下可能被动态链接到 Python 解释器。
idlelib
Python 的集成开发与学习环境(IDLE)。基于 tkinter。
tkinter.constants
当向 Tkinter 调用传入各种形参时可被用来代替字符串的符号常量。由主 tkinter 模块自动导入。
tkinter.dnd
针对 tkinter 的(实验性的)拖放支持。当以 Tk DND 代替时它将会被弃用。
tkinter.tix
(已弃用)一个增加了部分新控件的较老的第三方 Tcl/Tk 包。对多数人来说可以在 tkinter.ttk 中找到更好的替代品。
turtle
Tk 窗口中的海龟绘图库。
tkinter案例
—
tkinter案例创建一个窗口
from tkinter import *
root = Tk() # 实例化TK
root.mainloop() # 进入事件循环
创建带事件响应的按钮
from tkinter import *
from tkinter import messagebox
root = Tk()
bt = Button(root)
bt['text'] = '点我'
bt.pack()
def dianji(e):
messagebox.showinfo('message', 'give flower') # 提示框
bt.bind('<Button-1>', dianji) # 绑定点击事件
root.mainloop() # 进入事件循环
创建指定长宽高的窗口
from tkinter import messagebox
root = Tk()
root.title('我的gui程序')
root.geometry('500x300+100+200')
# 500宽度 300高度 距屏幕左侧100像素 顶部200像素
bt = Button(root)
bt['text'] = '点我'
bt.pack()
def dianji(e):
print(e)
messagebox.showinfo('message', 'give flower') # 提示框
bt.bind('<Button-1>', dianji) # 绑定点击事件
root.mainloop() # 进入事件循环
创建一个居中显示的窗口
from tkinter import *
app = Tk()
app.title('拜液用户管理')
sw = app.winfo_screenwidth()
# 得到屏幕宽度
sh = app.winfo_screenheight()
# 得到屏幕高度
ww = 610
wh = 400
x = (sw - ww) / 2
y = (sh - wh) / 2
app.geometry("%dx%d+%d+%d" % (ww, wh, x, y))
app.resizable(width=False, height=False)
app.mainloop()
参考资料
—
参考资料:https://blog.csdn.net/qq_60087163/article/details/129172486
https://blog.csdn.net/weixin_44634704/article/details/122571178
https://www.runoob.com/python/python-gui-tkinter.html
https://docs.python.org/zh-cn/3/library/tkinter.html
https://cloud.tencent.com/developer/article/2192326?areaSource=102001.14&traceId=nNG2EeN5txJPaCgbnzQ5p
http://www.imyhq.com/game/1207.html
评论