本文共 5114 字,大约阅读时间需要 17 分钟。
Tkinter 是 Python 的标准库,用于创建 GUI(图形用户界面)程序。其中,Button(按钮)、Checkbutton(复选框)、Radiobutton(单选框)和Menu(菜单)是最常用的控件之一。本文将详细介绍这些控件的特性、属性和使用方法。
Button 是 Tkinter 中最常用的控件之一,用于创建按钮。按钮可以包含文本或图片,并且可以关联回调函数。以下是 Button 的常用属性和方法。
activebackground
鼓励按钮的背景色。activeforeground
鼓励按钮的前景色(通常是文字颜色)。bd
按钮的边框宽度,默认为 2 像素。bg
按钮的背景色。command
按钮关联的回调函数,当按钮被点击时会自动调用该函数。fg
按钮文本的颜色。font
按钮的字体。height
按钮的高度。highlightcolor
当按钮被激活时的高亮颜色。image
按钮显示的图片。justify
多行文本的对齐方式,可选项包括:LEFT、RIGHT、CENTER。padx
按钮在 X 轴方向上的内边距。pady
按钮在 Y 轴方向上的内边距。relief
边框样式,可选值包括:FLAT、SUNKEN、RAISED、GROOVE、RIDGE,默认为 FLAT。state
按钮的状态,可选值包括:NORMAL、ACTIVE、DISABLED,默认为 NORMAL。underline
文本是否带下划线,索引方式表示。width
按钮的宽度。wraplength
文本行的最大字符数量。text
按钮显示的文本内容。anchor
文本的位置,可选值包括:N、S、E、W、CENTER。compound
组合控件类型,可选值包括:NONE、LEFT、RIGHT、CENTER、TOP、BOTTOM。bitmap
使用位图表示的图片。focus_set
焦点设置,通常与 Entry 控件配合使用。master
父窗口指针。relief
边框样式,和 Button 的 relief 属性相同。wraplength
文本行的最大字符数量。deselect()
清除单选按钮的选中状态。flash()
在激活状态和正常状态之间快速闪烁,保持开始的状态。invoke()
调用与按钮单击时相同的操作。select()
设置按钮为选中状态。toggle()
切换按钮的选中状态。Checkbutton 是 Tkinter 中的复选框,用于表示两种状态:选中和未选中。它支持多个选项,可以通过变量来关联。
activebackground
鼓励复选框的背景色。activeforeground
鼓励复选框的前景色。bg
复选框的背景色。bitmap
复选框显示的位图。bd
边框宽度,默认为 2 像素。command
复选框关联的回调函数。cursor
光标的形状。disabledforeground
复选框处于禁用状态时的前景色。font
复选框的字体。fg
复选框的前景色。height
复选框的高度。highlightcolor
复选框聚焦时的高亮颜色。image
复选框显示的图片。justify
多行文本的对齐方式。offvalue
复选框未选中时的值。onvalue
复选框选中时的值。padx
内边距,X 方向。pady
内边距,Y 方向。relief
边框样式。selectcolor
选中时的颜色,默认为 red。selectimage
选中时显示的图片。state
状态,默认为 NORMAL。text
显示的文本,支持换行。underline
文本是否带下划线。variable
关联的变量,值为 1 或 0。width
宽度,默认为文本或图片决定的大小。wraplength
文本行的最大字符数量。deselect()
清除复选框的选中状态。flash()
在激活状态和正常状态之间快速闪烁。invoke()
调用与单击时相同的操作。select()
设置复选框为选中状态。toggle()
切换复选框的选中状态。Radiobutton 是 Tkinter 中的单选按钮,和 Checkbutton 类似,但只能选择一个选项。它通常用于多个选项中选择一个。
from tkinter import *def print_selection(): var1.set('你选择了' + var1.get())window = Tk()window.title('选择按钮')window.geometry('300x300')var1 = StringVar()label = Label(window, bg='green', width=25, height=2, text='目前没有选项')label.pack()r1 = Radiobutton(window, text='A选项', variable=var1, value='A', command=print_selection)r1.pack()r2 = Radiobutton(window, text='B选项', variable=var1, value='B', command=print_selection)r2.pack()r3 = Radiobutton(window, text='C选项', variable=var1, value='C', command=print_selection)r3.pack()window.mainloop() Menu 用于创建菜单,支持添加命令、菜单项和子菜单。Menu 的使用非常灵活,适合创建复杂的菜单界面。
from tkinter import *window = Tk()window.title('菜单')menubar = Menu(window)# 创建子菜单file_menu = Menu(menubar)file_menu.add_command(label='新建', command=lambda: print('新建文件'))file_menu.add_command(label='打开', command=lambda: print('打开文件'))file_menu.add_command(label='保存', command=lambda: print('保存文件'))file_menu.add_command(label='另存为', command=lambda: print('另存为文件'))edit_menu = Menu(menubar)edit_menu.add_command(label='复制', command=lambda: print('复制'))edit_menu.add_command(label='粘贴', command=lambda: print('粘贴'))edit_menu.add_command(label='剪切', command=lambda: print('剪切'))view_menu = Menu(menubar)view_menu.add_command(label='大纲视图', command=lambda: print('大纲视图'))view_menu.add_command(label='网页视图', command=lambda: print('网页视图'))help_menu = Menu(menubar)help_menu.add_command(label='版权信息', command=lambda: print('版权信息'))help_menu.add_command(label='其他说明', command=lambda: print('其他说明'))# 将菜单添加到主窗口menubar.add_cascade(label='文件', menu=file_menu)menubar.add_cascade(label='编辑', menu=edit_menu)menubar.add_cascade(label='视图', menu=view_menu)menubar.add_cascade(label='帮助', menu=help_menu)window.config(menu=menubar)window.mainloop() Message 控件用于显示多行文本,支持换行和对齐。它比 Label 控件更灵活,适合展示较长的文字。
from tkinter import *window = Tk()window.title('多行文本')whatever_you_do = "Only those who have the patience to do simple things properly are truly great.这是一行长文本,会自动换行显示。"message = Message(window, text=whatever_you_do)message.config(bg='lightgreen', font=('times', 20, 'italic'))message.pack()window.mainloop() Canvas 是 Tkinter 中用于绘图的主要工具,可以绘制图形、文本、控件或其他复杂元素。
bd
边框宽度。bg
背景色。confine
是否限制画布滚动。cursor
光标形状。height
画布高度。highlightcolor
高亮颜色。relief
边框样式。scrollregion
可滚动区域。width
画布宽度。xscrollincrement
水平滚动增量。xscrollcommand
水平滚动条的 set 方法。yscrollincrement
垂直滚动增量。yscrollcommand
垂直滚动条的 set 方法。以下是一个简单的递归二叉树绘制示例:
from turtle import *# 设置色彩模式colormode(255)lt(90) # 左转90度lv = 14 # 树的高度l = 120 # 每个分支的长度s = 45 # 叉的长度pencolor(0, 0, 0)penup()bk(l)pendown()fd(l)def draw_tree(l, level): global r, g, b w = width() width(w * 3.0 / 4.0) r = r + 1 g = g + 2 b = b + 3 pencolor(r % 200, g % 200, b % 200) lt(s) fd(l) if level < lv: draw_tree(l, level + 1) bk(l) rt(2 * s) fd(l) if level < lv: draw_tree(l, level + 1) bk(l) lt(s) width(w) speed("fastest")draw_tree(l, 4)done() 以上是对 Tkinter 中常用控件的详细介绍,涵盖了 Button、Checkbutton、Radiobutton、Menu、Message 和 Canvas 的使用方法和特性。这些控件为构建用户友好的 GUI 应用程序提供了强大的工具。
转载地址:http://wnofk.baihongyu.com/