Logo
Section 1 / 4

Tkinter 简介

了解对话框以及随标准 Python 发布的 Tkinter 框架结构。

导入

Tkinter 简介

了解对话框以及随标准 Python 发布的 Tkinter 框架结构。

Tkinter 简介

Python 可以使用多种图形用户界面(GUI,发音为“gooey”)系统。本教程将主要聚焦于 Tkinter,它随标准 Python 发行版一起提供。

Tkinter 是 Python 自带的标准 GUI 库,提供了简单易用的接口,使用户能够轻松创建 GUI 应用程序。它包含丰富的控件组件,如按钮、菜单和文本框等,这些组件帮助用户构建各种图形界面元素。

Tkinter 中的对话框

许多程序并不需要完整的图形界面,只需几个对话框即可。Tkinter 提供了多种内置对话框。要使用它们,需从 Tkinter 中导入 messagebox、simpledialog 和/或 filedialog。

消息框

消息框用于通过 Tkinter 的 messagebox 对话框显示带有标题的消息。以下是几种常见的 messagebox 类型:

  • messagebox.showinfo(title, message)
  • messagebox.showwarning(title, message)
  • messagebox.showerror(title, message)

    上述三种方法功能基本相同,区别在于显示的图标不同。它们都包含一个 标题、一条 消息 和一个 确定(OK) 按钮。

  • result = messagebox.askyesno(title, question)

    提供 是(Yes) 和 否(No) 两个按钮,分别返回 True 或 False。

以下代码创建了 四个 不同类型的消息框:一个显示 信息,一个显示 错误,一个显示 警告,还有一个提出 是/否 问题:

No configuration found for ID: 51d0a506325b8b5b3b5534bbb7f55933f61a439e41ab314014324a8ed330f7e3

简单对话框

简单对话框用于向用户请求输入,输入内容可以是整数、浮点数或字符串。以下是 simpledialog 的一些常用方法:

  • result = simpledialog.askfloat(title, message)
  • result = simpledialog.askinteger(title, message)
  • result = simpledialog.askstring(title, message)

    以上三个方法分别允许用户输入浮点数、整数或字符串。它们都提供 取消(Cancel) 和 确定(OK) 按钮。如果用户取消操作,返回值为 None。

文件对话框

文件对话框用于选择或保存文件与文件夹。以下是两个常用的 filedialog 方法:

  • input_file = filedialog.askopenfilename(initialdir=path, title=title)

    用于选择要读取的文件。若提供了 initialdir 参数,则打开文件对话框时会从指定路径开始导航。

  • output_file = filedialog.asksaveasfilename(initialdir=path)

    用于选择文件保存的位置。若提供了 initialdir 参数,则导航起点为该路径。

一个小问题是,每次调用 Tkinter 时都会自动显示一个“根窗口”(root window)。这是一个出现在屏幕上的小窗口,没有任何实际功能。为避免这种情况,可以手动创建一个根窗口并立即隐藏它。这只需要做一次即可。

1import tkinter 2root = tkinter.Tk() 3root.withdraw()

Tkinter 的结构

GUI 程序的工作方式与普通程序不同。 它们不依赖主函数控制所有代码流程,而是先创建图形界面,之后所有的操作都由用户与界面的交互触发。例如,用户点击按钮后,会执行相应的代码。

典型的 Tkinter 程序通常以如下方式开始:

1from tkinter import * 2import tkinter.ttk

接着,创建一个“根”窗口:

1top = Tk()

然后,在窗口中添加 Tkinter 控件。通常在此阶段完成以下三项任务:

  1. 创建 各类控件(如按钮、文本区域等)。
  2. 布局 控件在窗口中的位置。
  3. 绑定 代码到特定控件,使其响应用户操作。

最后,将程序控制权交给 GUI 系统:

1top.mainloop()

可以在调用 mainloop 之前执行一些初始化代码,但一旦调用 mainloop,GUI 就接管了程序的运行。

在下面的例子中,你可以修改代码尝试不同的效果。更改代码后点击 运行 按钮,如果 GUI 没有出现预期效果,可切换到 终端 标签页查看是否有编译错误或异常抛出。

为了更好地理解本课讨论的 GUI 概念,你可以在代码中添加不同类型的对话框和消息框,亲身体验它们的使用方式:

No configuration found for ID: f0dc40cd27d50902f1db67febccec4d3b9beac23d8e7735b3130a8da965d0434

测试

将控件放入图形用户界面