Tkinter
由于最近的项目要用tk写桌面软件,总结一下写代码过程中用到的一些知识点。
一、布局
1. 绝对布局----place()
-
component.place(x=, y=)
,x、y分别为组件距离窗口左上角的距离 -
设置绝对布局一般为窗口大小固定时使用,如果窗口大小可以调整不适合绝对布局,因为拉伸窗口后组件会流出大片空白
-
设置窗口大小固定:可以通过设置相同的窗口的最大和最小尺寸实现
window.maxsize(width, height) window.minsize(width, height)
2. 相对布局----pack()
-
相对布局会根据组件的加入顺序自动调整他们的位置
-
pack()方法的参数:side, fill, padx/pady, ipadx/ipady, anchor, expand
-
side: 决定组件停靠的方向。left, right, top, bottom
-
fill: 决定组件是否填充,以及填充的方向。x, y, both, none
-
padx/pady: 组件外,组件跟邻近组件或窗体边界的距离(外边距)
-
ipadx/ipady: 组件内,组件文本跟组件边界之间的距离(内边距)
-
anchor: 决定组件停靠的位置
-
expand: 决定组件的“势力范围”是否扩大到“扩展范围
-
-
pack方法使用起来比较方便,不需要自己去操心组件放置的具体位置,但是相对来说很多细节无法控制,适用于比较规则的界面
3. 表格布局----grid()
- 参数:row、column、ipadx/ipady、padx/pady、rowspan、columnspan 、sticky
- row :组件定位表格的行
- column: 组件定位表格的列
- ipadx/ipady: 填充表格框,让表格框在X/Y方向上变胖
- padx/pady: 决定组件跟邻近表格线或窗体边界的距离
- rowspan: 组件跨多少列表格框,默认1个组件占用1行1列
- columnspan :组件跨多少行表格框,默认1个组件占用1行1列
- sticky :当表格框大小组件的大小,组件默认居中显示,那这个表格框周围的空白部分,如何分配,这就由sticky来决定。
二、容器
1. 窗口------tk中最基础的容器
-
创建窗口
import tkinter as tk window = tk.Tk()
-
设置大小以及位置(例如屏幕中心位置):
window_width = width window_height = height # 获取屏幕尺寸 screen_width = create_window.winfo_screenwidth() screen_height = create_window.winfo_screenheight() # 计算x、y位置 x = (screen_width - create_window_width) // 2 y = (screen_height - create_window_height) // 2 # geometry设置窗口参数 window.geometry(f"{create_window_width}x{create_window_height}+{x}+{y}")
-
设置标题
window.title("标题")
-
窗口显隐
# 隐藏窗口 window.withdraw() # 显示窗口 window.deiconify() # 销毁窗口 windwo.destroy()
-
主窗口循环:配置完之后必须要调用循环,不然不会生效
window.mainloop()
-
设置窗口显示优先级,如置顶某个窗口:
window.wm_attributes('-topmost', 1)
-
关闭窗口事件:点击窗口右上角x,默认为关闭销毁窗口,这个方法可以自己重写,只要在protocol中配置自己重写的方法就可以,再点击关闭之后就会执行自己重写的方法
# action_method:自己重写的方法 window.protocol('WM_DELETE_WINDOW', action_method)
-
tk窗口默认会有一个图标,但是也允许用户自己更换
# 这里的图片文件必须为.ico的图标格式 window.iconbitmap(ico_path)
2. frame
-
frame基于window,可以利用window+frame+control组件完成更为个性化的界面
# window为父窗口 frame = tk.Frame(window)
三、控件
1、 创建方式
control = tk.ControlName(Window/Frame, args...)
2、 常见的控件
- 按钮
- 文本输入
- 显示文本
- 表格
- 多选项卡