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 库。