Python 自带了 Tkinter 模块,可以用来开发 Python 的 GUI 应用程序。
一、Tkinter 的基本结构
Tkinter 会创建一个主窗口(MainWindow),可以在窗口中添加控件。控件包括标签(Label)、按钮(Button)、文本框(Entry)、列表框(Listbox)、滚动条(Scrollbar)、菜单(Menu)、对话框(Dialog) 等;这些控件都继承自 tkinter.Widget。
下面是一个简单的 Tkinter 程序。
import tkinter as tk # 创建主窗口 root = tk.Tk() # 创建标签 label = tk.Label(root, text="Hello, Tkinter!") # 将标签添加到主窗口 label.pack() # 进入消息循环 root.mainloop()
运行这段代码,会创建一个窗口,窗口上有一行文本 “Hello, Tkinter!”
二、控件的布局和事件处理
Tkinter 中控件的布局通过几何管理器来控制,常用的几何管理器有 pack、grid 和 place。其中 pack 是最简单的管理器,可以自动将控件填充到父容器中。
对于事件处理,可以通过绑定事件处理函数来实现。下面是一个带按钮的程序,当按下按钮时,会在标签上显示文本 “Hello, Tkinter!”
import tkinter as tk
def show_message():
label.config(text="Hello, Tkinter!")
# 创建主窗口
root = tk.Tk()
# 创建标签
label = tk.Label(root, text="")
# 创建按钮
button = tk.Button(root, text="Click me!", command=show_message)
# 将标签和按钮添加到主窗口
label.pack()
button.pack()
# 进入消息循环
root.mainloop()
三、用 Tinker 快速创建图形化界面
Tkinter 是 Python 自带的 GUI 库,但它的 API 非常底层,需要处理很多细节。PyQt、wxPython 等库封装了更高层次的 API,能够快速创建复杂的图形化界面。而 Python Tinker 则是在 Tkinter 的基础上封装了更高级的 API,可以更快速地开发 GUI 应用程序。
下面是一个使用 Tinker 创建的简单程序,包括一个菜单和一个标签,当用户选择菜单项时,标签会显示对应的文本。
import tkinter as tk
from tkinter import ttk # 导入 ttk,因为 tk 中没有 Combobox 控件
def change_message(event):
index = combo.current()
message = messages[index]
label.config(text=message)
# 创建主窗口
root = tk.Tk()
# 创建菜单
menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="New")
file_menu.add_command(label="Save")
file_menu.add_command(label="Exit", command=root.quit)
# 创建下拉框和标签
messages = ["Hello, Tinker!", "Goodbye, Tinker!"]
combo = ttk.Combobox(root, values=messages)
combo.current(0)
label = tk.Label(root, text="")
# 将下拉框和标签添加到主窗口
combo.pack()
label.pack()
# 绑定事件处理函数
combo.bind("<>", change_message)
# 进入消息循环
root.mainloop()
在这个程序中,我们通过 ttk 模块创建了 Combobox 下拉框控件,同时添加了菜单。
四、小结
Python Tinker 这个 GUI 库可以帮助我们更快速地开发 Python 的图形化界面程序。通过上面的示例,我们可以看到,使用 Tinker 相对于纯 Tkinter 来说,代码更为简洁,同时也提供了更高层次的 API。当然,如果需要开发更为复杂的 GUI 应用程序,还是建议使用其他高级 GUI 库。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/156505.html
微信扫一扫
支付宝扫一扫