#Tkinter# Python GUI库

志扬工作室

共 7416字,需浏览 15分钟

 · 2023-07-01

 文章所涉及内容更多来自网络,在此声明,并感谢知识的贡献者!

tkinter简介

tkinter简介
tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写,也特别适合初学者学习GUl编程。

tkinter官网

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 布局 方位布局
 

9c22625b561558dc4acbc426cafa2df8.webp

9b41fe568ceeefd9469aee6821cd3f82.webp

ba8c318c740ef3cfd6080fa19dc6be55.webp

Grid布局 网格布局
grid 布局法就是将屏幕切成表格的样子,通过横向坐标 row 和纵向坐标 column 来指定元素的位置。第一行标记为 0,第一列也标记为 0。

1e9f56fe472a50387d293bce49c2d3f3.webp

a34735a2c50ff2b7234dbcda6c8b23ef.webp

18bf7efe0edcc53d0ba3851923c92229.webp

 Place布局 坐标布局

直接指定元素在父元素中的坐标值,单位是像素。

4931fee625a2605d9b04b2f0491865fe.webp

d7c180c46f2e0717d6165911ffc3d232.webp

tkinter组件


Tkiner 组件
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()  # 进入事件循环


5e0e5fdca68348478d4badcd4a0de030.webp


创建带事件响应的按钮
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()  # 进入事件循环


14665670c01eb87ac7dec7e867b76fbd.webp


创建指定长宽高的窗口


fb3c7a1e3bcb5026f544bcea5893ea77.webp

 from tkinter import *
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


浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报