tkinter 步骤

  1. 导入 Tkinter 库

    from tkinter import * 
  2. 创建窗口对象

    root = Tk() 
  3. 添加组件并布局
  4. 进入消息循环

    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,水平)
expand1可扩展,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 messagebox

Pyinstaller

安装 Pyinstaller

pip install pyinstaller

最简单的使用方式:

pyinstaller myscript.py

通过这种方式生成的可执行文件默认位于当前文件夹的dist目录下的myscript目录中,该目录下除了有exe文件外,还有若干个其他文件,这些文件都是运行时必须的。

编译完成后可以删除build文件夹,该文件夹存放的是编译过程中的生成的临时文件

如果希望编译出的exe文件不依赖其他文件,可以添加-F选项:

pyinstaller -F myscript.py
编译出的单独的exe文件在启动时速度上略慢于编译成文件夹方式。因为在执行单独的exe时会将资源先释放到临时文件夹中再执行。
×