Appearance
Tkinter常用控件
在使用Tkinter开发GUI应用程序时,需要了解和使用各种控件(也称为组件或小部件)。
常用的Tkinter控件包括:按钮(Button
)、标签(Label
)、文本框(Entry
)、列表框(Listbox
)、复选框(Checkbutton
)、单选按钮(Radiobutton
)、消息提醒框(Messagebox
)、菜单栏控件(Menu
)等。
按钮(Button)
按钮是最常用的控件之一,用于触发事件。
代码如下
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
print("Button clicked!")
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Click Me', # 设置按钮文本
font=('Arial', 16), # 设置字体和字号
bg='yellow', # 设置背景色
fg='blue', # 设置前景色(文本颜色)
padx=10, # 设置x方向内边距
pady=10, # 设置y方向内边距
relief='solid', # 设置边框样式
bd=2, # 设置边框宽度
command=on_button_click) # 设置单击事件处理函数
btn.pack()
root.mainloop()
标签(Label)
标签用于显示文本或图像。Label控件可以使用多种参数来设置标签的外观和行为。
代码如下
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
print(label['text'])
# 创建一个标签并添加到主窗口
label = Label(root,
text='Hello, Tkinter!', # 设置标签文本
font=('Arial', 16), # 设置字体和字号
bg='yellow', # 设置背景色
fg='blue', # 设置前景色(文本颜色)
padx=10, # 设置x方向内边距
pady=10, # 设置y方向内边距
relief='solid', # 设置边框样式
bd=2, # 设置边框宽度
justify='center') # 设置文本对齐方式
label.pack()
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Get Label Text', # 设置按钮文本
command=on_button_click) # 设置单击事件处理函数
btn.pack()
# 创建一个显示为图片的标签
photo = PhotoImage(file=r'C:\Users\Administrator\Pictures\130406-20220530084101925-1730394191.png') # 注意,这里只能添加png/gif格式的图片,jpeg的图片需要用Pillow库来加载
lable_image = Label(root, text='图片', image=photo, compound='top', relief=RIDGE)
lable_image.pack()
root.mainloop()
参数说明
text
: 设置标签显示的文本内容。
font
: 设置字体和字号,例如 ('Arial', 16) 表示使用 Arial 字体,字号为 16。
bg
: 设置标签的背景色。
fg
: 设置标签的前景色(文本颜色)。
padx
和 pady
: 分别设置标签的x方向和y方向的内边距。
relief
: 设置标签的边框样式,可以是 flat(默认)、raised、sunken、groove 或 ridge。
bd
: 设置标签的边框宽度。
justify
: 设置多行文本的对齐方式,可以是 left、center 或 right。
文本框(Entry)
文本框用于单行文本输入。Entry控件不能使用与 Label 相同的样式属性,如 font、bg、fg 等,但可以使用一些特定于文本框的属性。
代码如下
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
print(entry.get())
# 创建一个文本框并添加到主窗口
entry = Entry(root,
show='*', # 设置输入内容为星号,适用于密码输入
width=30, # 设置文本框宽度,是指字符的个数,而不是像素
justify='center', # 设置文本对齐方式
bd=2, # 设置边框宽度
relief='solid') # 设置边框样式
entry.pack()
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Get Entry Text', # 设置按钮文本
command=on_button_click) # 设置单击事件处理函数
btn.pack()
root.mainloop()
单选按钮(Radiobutton)
单选按钮用于单项选择。Radiobutton控件可以使用与 Label 相同的样式属性,如 font、bg、fg 等。
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
print(var.get())
# 创建一个变量来存储单选按钮的值
var = IntVar()
# 创建多个单选按钮并添加到主窗口
rb1 = Radiobutton(root,
text='Option 1', # 设置单选按钮文本
variable=var, # 设置单选按钮变量
value=1, # 设置单选按钮值
font=('Arial', 14), # 设置字体和字号
bg='lightgrey', # 设置背景色
fg='black', # 设置前景色(文本颜色)
padx=5, # 设置x方向内边距
pady=5, # 设置y方向内边距
relief='solid', # 设置边框样式
bd=1) # 设置边框宽度
rb1.pack()
rb2 = Radiobutton(root,
text='Option 2',
variable=var,
value=2,
font=('Arial', 14),
bg='lightgrey',
fg='black',
padx=5,
pady=5,
relief='solid',
bd=1)
rb2.pack()
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Get Selected Option', # 设置按钮文本
command=on_button_click) # 设置单击事件处理函数
btn.pack()
root.mainloop()
复选框(Checkbutton)
复选框用于多项选择。Checkbutton控件可以使用与 Label 相同的样式属性,如 font、bg、fg 等。
代码如下
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
print(f'Checkbutton 1: {var1.get()}')
print(f'Checkbutton 2: {var2.get()}')
# 创建变量来存储复选框的状态
var1 = IntVar()
var2 = IntVar()
# 创建复选框并添加到主窗口
chk1 = Checkbutton(root,
text='Option 1', # 设置复选框文本
variable=var1, # 设置复选框变量
font=('Arial', 14), # 设置字体和字号
bg='lightgrey', # 设置背景色
fg='black', # 设置前景色(文本颜色)
padx=5, # 设置x方向内边距
pady=5, # 设置y方向内边距
relief='solid', # 设置边框样式
bd=1) # 设置边框宽度
chk1.pack()
chk2 = Checkbutton(root,
text='Option 2',
variable=var2,
font=('Arial', 14),
bg='lightgrey',
fg='black',
padx=5,
pady=5,
relief='solid',
bd=1)
chk2.pack()
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Get Checkbutton States', # 设置按钮文本
command=on_button_click) # 设置单击事件处理函数
btn.pack()
root.mainloop()
列表框(Listbox)
列表框用于显示一个列表。Listbox控件可以使用一些与 Label 相同的样式属性,如 font、bg、fg 等。
代码如下
python
from tkinter import *
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def on_button_click():
selected_items = listbox.curselection()
for item in selected_items:
print(listbox.get(item))
# 创建一个列表框并添加到主窗口
listbox = Listbox(root,
font=('Arial', 12), # 设置字体和字号
bg='white', # 设置背景色
fg='black', # 设置前景色(文本颜色)
relief='solid', # 设置边框样式
bd=2) # 设置边框宽度
listbox.pack()
# 添加列表项
listbox.insert(END, 'Item 1')
listbox.insert(END, 'Item 2')
# 创建一个按钮并添加到主窗口
btn = Button(root,
text='Get Selected Items', # 设置按钮文本
command=on_button_click) # 设置单击事件处理函数
btn.pack()
root.mainloop()
消息提醒框(Messagebox)
消息提醒框用于向用户显示信息或警告。可以使用 messagebox 模块中的各种函数来创建不同类型的消息框,如信息框、警告框、错误框等。
常用的消息框函数:
showinfo(title, message):显示信息消息框 showwarning(title, message):显示警告消息框 showerror(title, message):显示错误消息框 askquestion(title, message):显示询问消息框,返回 "yes" 或 "no" askokcancel(title, message):显示确定取消消息框,返回 True 或 False askyesno(title, message):显示是/否消息框,返回 True 或 False askretrycancel(title, message):显示重试取消消息框,返回 True 或 False
代码如下
python
from tkinter import *
from tkinter import messagebox # 尽管我们导入了 tkinter 模块,但 messagebox 是 tkinter 模块中的一个子模块,需要单独导入
# 创建顶层窗口对象
root = Tk()
root.geometry('1024x768')
def show_info():
messagebox.showinfo("Information", "This is an info message")
def show_warning():
messagebox.showwarning("Warning", "This is a warning message")
def show_error():
messagebox.showerror("Error", "This is an error message")
def ask_question():
response = messagebox.askquestion("Question", "Do you like Python?")
print(response) # 返回 'yes' 或 'no'
def ask_ok_cancel():
response = messagebox.askokcancel("Ok Cancel", "Do you want to proceed?")
print(response) # 返回 True 或 False
def ask_yes_no():
response = messagebox.askyesno("Yes No", "Do you agree?")
print(response) # 返回 True 或 False
def ask_retry_cancel():
response = messagebox.askretrycancel("Retry Cancel", "Do you want to try again?")
print(response) # 返回 True 或 False
# 创建按钮并添加到主窗口
btn_info = Button(root, text='Show Info', command=show_info)
btn_info.pack(pady=5)
btn_warning = Button(root, text='Show Warning', command=show_warning)
btn_warning.pack(pady=5)
btn_error = Button(root, text='Show Error', command=show_error)
btn_error.pack(pady=5)
btn_question = Button(root, text='Ask Question', command=ask_question)
btn_question.pack(pady=5)
btn_ok_cancel = Button(root, text='Ask Ok Cancel', command=ask_ok_cancel)
btn_ok_cancel.pack(pady=5)
btn_yes_no = Button(root, text='Ask Yes No', command=ask_yes_no)
btn_yes_no.pack(pady=5)
btn_retry_cancel = Button(root, text='Ask Retry Cancel', command=ask_retry_cancel)
btn_retry_cancel.pack(pady=5)
root.mainloop()
好的,将菜单项文本调整为中文,下面是更新后的内容:
菜单栏控件(Menu)
菜单栏用于为用户提供可选的操作项,通常显示在应用程序的顶部。Tkinter 提供了 Menu
控件来创建菜单栏。
代码如下
Python
from tkinter import *
from tkinter import messagebox
def show_about():
messagebox.showinfo("关于", "这是一个 Tkinter 应用程序。")
def open_file():
messagebox.showinfo("打开", "点击了打开文件菜单项。")
def exit_application():
root.quit()
# 创建顶层窗口对象
root = Tk()
root.geometry('500x300')
root.title('Tkinter 菜单示例')
# 创建菜单栏
menu_bar = Menu(root)
root.config(menu=menu_bar)
# 创建文件菜单
file_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='文件', menu=file_menu)
file_menu.add_command(label='打开', command=open_file)
file_menu.add_separator()
file_menu.add_command(label='退出', command=exit_application)
# 创建帮助菜单
help_menu = Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label='帮助', menu=help_menu)
help_menu.add_command(label='关于', command=show_about)
# 显示主窗口
root.mainloop()
代码说明
创建菜单栏:
Pythonmenu_bar = Menu(root) root.config(menu=menu_bar)
这里创建了一个菜单栏,并将其设置为顶层窗口的菜单。
创建菜单项:
- 文件菜单:通过
Menu
控件创建,并添加到菜单栏中。使用add_command
方法添加菜单项,例如“打开”和“退出”。 - 帮助菜单:类似文件菜单,通过
Menu
控件创建,并添加到菜单栏中。包含一个“关于”菜单项。
- 文件菜单:通过
菜单项操作:
show_about
:展示一个关于对话框,文本为中文“关于”。open_file
:展示一个打开文件的对话框(这里只是一个示例,实际打开文件功能可以通过tkinter.filedialog
实现),文本为中文“打开”。exit_application
:退出应用程序,文本为中文“退出”。
菜单栏控件的功能
- 菜单项:可以是命令(如打开文件、退出应用)、子菜单或分隔符。
- 菜单配置:可以设置不同的标签和事件处理函数来实现菜单的功能。
- 分隔符:可以通过
add_separator
方法添加菜单项之间的分隔线,以增强菜单的可读性。