您的位置:

Python Tinker: 快速实现图形化界面的Python GUI库

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