tkinter 步骤
导入 Tkinter 库
from tkinter import *创建窗口对象
root = Tk()- 添加组件并布局
进入消息循环
root.mainloop()
布局方式
tkinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局。
- pack布局:控件从上到下,依次排列,参数有:
| 参数 | 作用 |
|---|---|
| after | 将组件置于其他组件之后; |
| before | 将组件置于其他组件之前; |
| anchor | 组件的对齐方式,顶对齐'n',底对齐's',左'w',右'e' |
| side | 组件在主窗口的位置,可以为'top','bottom','left','right'(使用时tkinter.TOP,tkinter.E); |
| fill | 填充方式 (Y,垂直,X,水平) |
| expand | 1可扩展,0不可扩展 |
- grid布局:控件按设置的网格位置进行排列,参数有:
| 参数 | 作用 |
|---|---|
| column | 组件所在的列起始位置 |
| columnspam | 组件的列宽 |
| row | 组件所在的行起始位置 |
| rowspam | 组件的行宽 |
- place布局:控件按坐标进行排列,参数有:
| 参数 | 作用 |
|---|---|
| anchor | 组件对齐方式 |
| x | 组件左上角的x坐标 |
| y | 组件右上角的y坐标 |
| relx | 组件相对于窗口的x坐标,应为0-1之间的小数 |
| rely | 组件相对于窗口的y坐标,应为0-1之间的小数 |
| width | 组件的宽度 |
| heitht | 组件的高度 |
| relwidth | 组件相对于窗口的宽度,0-1 |
| relheight | 组件相对于窗口的高度,0-1 |
窗口
设置标题
root.title('标题')设置窗口尺寸位置
root.geometry('宽度x高度+左上角X坐标+左上角Y坐标')禁止窗口最大化
root.resizable(0, 0)组件
Menu 菜单
| 参数 | 作用 |
|---|---|
| tearoff | 分窗,0为在原窗,1为点击分为两个窗口 |
| bg,fg | 背景,前景 |
| borderwidth | 边框宽度 |
| font | 字体 |
| activebackgound | 点击时背景,同样有activeforeground,activeborderwidth,disabledforeground |
| cursor | |
| postcommand | |
| selectcolor | 选中时背景 |
| takefocus | |
| title | |
| type | |
| relief |
| 方法 | 作用 |
|---|---|
| menu.add_cascade | 添加子选项 |
| menu.add_command | 添加命令(label参数为显示内容) |
| menu.add_separator | 添加分隔线 |
| menu.add_checkbutton | 添加确认按钮 |
| delete | 删除 |
menubar = Menu(root) # 创建主菜单栏
root['menu'] = menubar # 主菜单栏添加到主窗口
menubar.add_command(label='菜单1', command=被点击时调用的方法) # 主菜单栏添加菜单项
submenu = Menu(menubar, tearoff=0) # 创建子菜单栏
menubar.add_cascade(label='菜单2', menu=submenu) # 将子菜单栏绑定到主菜单栏的菜单2上
submenu.add_command(label='子菜单1')
submenu.add_command(label='子菜单2')
submenu.add_separator() # 给子菜单添加分割线
submenu.add_radiobutton(label='子菜单3') # 给子菜单添加单选框
submenu.add_radiobutton(label='子菜单4')
submenu.add_separator()
submenu.add_checkbutton(label='子菜单5') # 给子菜单添加复选框
submenu.add_checkbutton(label='子菜单6')复选框可选中可取消,单选框无法直接取消,需要点选其他项才行
Button 按钮
| 参数 | 作用 |
|---|---|
| anchor | 指定按钮上文本的位置 |
| background(bg) | 指定按钮的背景色 |
| bitmap | 指定按钮上显示的位图 |
| borderwidth(bd) | 指定按钮边框的宽度 |
| command | 指定按钮消息的回调函数 |
| cursor | 指定鼠标移动到按钮上的指针样式 |
| font | 指定按钮上文本的字体 |
| foreground(fg) | 指定按钮的前景色 |
| height | 指定按钮的高度 |
| image | 指定按钮上显示的图片 |
| state | 指定按钮的状态(disabled) |
| text | 指定按钮上显示的文本 |
| width | 指定按钮的宽度 |
| padx | 设置文本与按钮边框x的距离,还有pady |
| activeforeground | 按下时前景色 |
| textvariable | 可变文本,与StringVar等配合着用 |
Text 文本框
| 参数 | 作用 |
|---|---|
| background(bg) | 文本框背景色 |
| foreground(fg) | 前景色 |
| selectbackground | 选定文本背景色 |
| selectforeground | 选定文本前景色 |
| borderwidth(bd) | 文本框边框宽度 |
| font | 字体 |
| show | 文本框显示的字符,若为*,表示文本框为密码框 |
| state | 状态 |
| width | 文本框宽度 |
| textvariable | 可变文本,与StringVar等配合着用 |
Label 标签
| 参数 | 作用 |
|---|---|
| Anchor | 标签中文本的位置 |
| background(bg) | 背景色 |
| foreground(fg) | 前景色 |
| borderwidth(bd) | 边框宽度 |
| width | 标签宽度 |
| height | 标签高度 |
| bitmap | 标签中的位图 |
| font | 字体 |
| image | 标签中的图片 |
| justify | 多行文本的对齐方式 |
| text | 标签中的文本,可以使用'\n'表示换行 |
| textvariable | 显示文本自动更新,与StringVar等配合着用 |
单选框 Radiobutton 复选框 Checkbutton
| 参数 | 作用 |
|---|---|
| anchor | 文本位置 |
| background(bg) | 背景色 |
| foreground(fg) | 前景色 |
| borderwidth | 边框宽度 |
| width | 组件的宽度 |
| height | 组件高度 |
| bitmap | 组件中的位图 |
| image | 组件中的图片 |
| font | 字体 |
| justify | 组件中多行文本的对齐方式 |
| text | 指定组件的文本 |
| value | 指定组件被选中中关联变量的值 |
| variable | 指定组件所关联的变量 |
| indicatoron | 特殊控制参数,当为0时,组件会被绘制成按钮形式; |
| textvariable | 可变文本显示,与StringVar等配合着用 |
弹窗
messagebox 消息弹窗
先导入模块
from tkinter import messagebox- messagebox.showinfo(title='',message='') # 提示信息对话窗
- messagebox.showwarning(title='',message='') # 提出警告对话窗
- messagebox.showerror(title='',message='') # 提出错误对话窗
- messagebox.askquestion(title='',message='') # 询问选择对话窗
- messagebox.askokcancel(title='',message='') # 返回true和false
- messagebox.askyesno(title='',message='') # 返回true和false
- messagebox.askretrycancel(title='',message='') # 返回true和false
| 参数 | 作用 |
|---|---|
| default | 指定消息框按钮 |
| icon | 指定消息框图标 |
| message | 指定消息框所显示的消息 |
| parent | 指定消息框的父组件 |
| title | 标题 |
| type | 类型 |
simpledialog 带输入框的弹窗
先导入模块
from tkinter import messageboxPyinstaller
安装 Pyinstaller
pip install pyinstaller最简单的使用方式:
pyinstaller myscript.py通过这种方式生成的可执行文件默认位于当前文件夹的dist目录下的myscript目录中,该目录下除了有exe文件外,还有若干个其他文件,这些文件都是运行时必须的。
编译完成后可以删除build文件夹,该文件夹存放的是编译过程中的生成的临时文件
如果希望编译出的exe文件不依赖其他文件,可以添加-F选项:
pyinstaller -F myscript.py编译出的单独的exe文件在启动时速度上略慢于编译成文件夹方式。因为在执行单独的exe时会将资源先释放到临时文件夹中再执行。