使用 Tkinter 在 Python 中创建关机、重启和注销计算机的 GUI

2025年3月17日 | 阅读18分钟

众所周知,Python 因其多功能特性而成为一种标准的脚本语言。在下面的教程中,我们将了解如何借助 Python 编程语言中的 tkinteros 模块来构建一个 GUI 应用程序,以关闭、重启和注销计算机。

但在开始之前,让我们快速概述一下 os 模块。

简要了解 os 模块

os 模块是 Python 的一个内置模块,允许用户与操作系统交互。Python 中的 os 模块提供了用于处理目录、操作其内容以及与系统协作的函数。

为了开始与底层操作系统交互,我们首先需要导入 os 模块。其语法如下所示

文件:test.py

说明

在上面的代码片段中,我们使用了 import 语句来导入 os 模块。

现在让我们了解如何使用 os 模块关闭、重启和注销计算机系统。os 模块提供了 system() 方法,用于在子 shell 中执行命令(字符串)。此方法通过调用具有相同限制的 标准 C 函数 system() 来执行。如果命令产生任何输出,它将转发到解释器的标准输出流。每当使用此方法时,都会打开操作系统的特定 shell,并在其上执行命令。

现在让我们考虑 os 模块的 system() 方法的语法。

语法

参数

1. 命令: 命令是一个字符串类型参数,用于告知要执行的命令。

返回值

在 Unix 操作系统上,返回值为进程的退出状态。相反,在 Windows 操作系统上,返回值为系统 shell 运行命令后返回的值。

现在我们已经了解了 os.system() 方法的作用,是时候了解如何使用它来关闭、重启和注销计算机系统了。我们将使用系统的 shutdown 命令,后跟参数 /s 来关闭系统,/r 来重启系统,或 /l 来注销系统。我们还可以使用 /t 参数,后跟一个整数值来设置执行操作的计时器。

让我们考虑以下说明此操作的语法。

语法

项目先决条件

在 Python 中创建用于关闭、重启和注销计算机的 GUI 时,我们将需要一些库和模块。这些库简要描述如下

  1. tkinter: tkinter 库将允许我们为应用程序提供图形用户界面 (GUI)。
  2. os: os 模块将允许我们与操作系统交互。
  3. pillow: pillow 库是 Python 图像库,它允许我们向 Python 解释器添加图像处理功能。
  4. webbrowser: webbrowser 模块提供了一个高级接口,允许我们显示基于 Web 的文档。

由于 Tkinter 库以及 oswebbrowser 模块随 Python 预装,因此无需外部安装。但是,我们可以通过在命令提示符或终端中键入以下命令来使用 PIP 安装程序安装 pillow (PIL) 库。

语法

安装完成后,我们可以通过创建一个新的 python 程序文件并导入 pillow (PIL) 模块来验证 pillow 库是否已正确安装。

以下是说明相同内容的代码片段。

文件:verify.py

现在,让我们保存文件并在命令提示符或终端中运行以下命令。

语法

如果程序没有返回任何导入错误,则表示库已成功安装。如果出现任何异常,请尝试重新安装库并考虑查看其官方文档。

现在让我们开始构建项目。

使用 Python 中的 Tkinter 构建用于关闭、重启和注销计算机的 GUI

为了更好地理解,我们将创建这个 GUI 应用程序的完整项目代码分成了几个步骤。这些步骤如下所示:

步骤 1: 导入必要的模块

第二步: 定义执行不同操作所需的函数

步骤 3: 创建应用程序的主窗口。

步骤 4:向窗口添加必要的控件并设置事件触发器。

让我们更详细地了解上述步骤。

导入必要的模块

首先,我们将导入所有必需的模块,其中包括 tkinter 模块的所有小部件和模块、PIL 模块的 ImageImageTk 模块、os 模块和 webbrowser 模块。

让我们考虑以下说明相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们从 tkinter 模块导入了所有小部件和模块,以处理图形用户界面。然后,我们从 PIL 模块导入了 ImageImageTk 模块,以将图像添加到程序并在 Tkinter 应用程序中使用它们。然后,我们导入了 os 模块来使用系统命令。最后,我们导入了 webbrowser 模块,以便向应用程序添加网站链接。

定义执行不同操作的必要函数

现在我们已经为项目导入了所有必需的模块,是时候定义一些函数来执行不同的操作了。这些函数包括显示信息、执行所需命令、取消操作和访问帮助。

现在让我们详细了解这些函数的实现。

显示信息的函数

我们定义的第一个函数将允许我们显示信息。此函数将检查选项菜单中选定的键,并向用户显示与选定选项相关的信息。

以下是演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们定义了一个名为 display_info() 的函数,带有一个可变长度参数。在此函数中,我们使用 for 循环遍历 MENU 字典中的键。然后,我们使用 set() 方法从 INFO 列表中为选定的选项在标签中显示信息。

执行所需命令的函数

现在我们将定义一个函数,根据需要使用不同的参数执行系统的 shutdown 命令。此函数将使用 os 模块的 system() 方法,为菜单中选定的选项执行带有适当参数的系统 shutdown 命令。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们定义了一个名为 execute_command() 的函数。在此函数中,我们遍历了 MENU 字典中可用的键,并检查选定的选项是否等于 MENU 中的键。如果是,我们使用 system() 方法执行系统的 shutdown 命令,后跟作为该相应键的值的可用参数。

取消操作的函数

现在我们将定义一个函数来取消或终止操作。我们将使用 destroy() 方法来关闭应用程序。

以下是说明相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们定义了一个名为 cancel() 的函数。在此函数中,我们使用 destroy() 方法以及 gui_rootTk() 类的对象)来关闭应用程序。

访问帮助的函数

现在我们将定义一个函数来打开提供帮助和支持的 URL。我们将使用 webbrowser 模块的 open() 方法来打开所需的 URL。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们定义了一个名为 help() 的函数。在此函数中,我们使用 webbrowser 模块的 open() 方法来访问提供帮助和支持的 URL。

创建应用程序的主窗口

现在我们已经定义了所有必要的函数来执行操作,是时候创建主窗口了,小部件将添加到其中。我们将使用 tkinter 模块的 Tk() 类创建窗口。我们还将设置标题、大小、位置、背景颜色和图标。

让我们考虑以下说明相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们通过将 Tk() 类实例化为 gui_root 创建了主窗口。然后,我们使用 title() 方法设置了窗口的标题。我们还使用 geometry() 方法设置了窗口的大小和位置,并通过将 resizable() 方法的参数值设置为 0 来禁用可调整大小的选项,以获得更好的 UI。我们借助 config() 方法配置了窗口的背景颜色。最后,我们使用 iconbitmap() 方法设置了窗口的图标。

向窗口添加必要的控件并设置事件触发器

由于应用程序的主窗口已成功创建,我们将向窗口添加所有必要的控件并设置事件触发器。这些控件包括用于构建其他控件的框架、用于显示重要信息的标签、用于插入数据的输入字段以及用于操作输入数据和调用函数的按钮。

现在让我们详细了解这些控件的添加。

添加框架和图像

我们将首先向主窗口添加框架。这些框架将有助于构建其他小部件。这些框架可以使用 tkinter 模块的 Frame() 小部件创建。我们还将使用 PIL 模块的 ImageImageTk 模块将一些图像导入程序。这些图像将在应用程序中显示一些信息。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们使用 Frame() 小部件向窗口添加了一些框架,并将其 master 参数设置为 gui_rootTk() 类的对象)。然后,我们使用 pack() 方法来设置这些框架的位置。然后,我们使用 Image 模块的 open() 方法和 ImageTk 模块的 PhotoImage() 方法从目录中导入图像,用于 Tkinter 应用程序。

将小部件添加到 heading_frame 框架

现在我们将使用 Label() 小部件向此框架添加一个标签以显示标题。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们使用 Label() 小部件将图像添加为应用程序的标签。然后,我们使用 pack() 方法来设置此标签的位置。

将小部件添加到 menu_frame 框架

现在我们将定义一个字典来显示一组通过应用程序执行的选项。我们还将定义一个列表来显示与每个选项关联的信息。然后,我们将添加标签等小部件以显示一些信息,以及一个选项菜单供用户使用 Label()OptionMenu() 小部件选择要执行的操作。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们定义了一个名为 MENU 的字典,显示了用于执行相关操作的选项和参数。然后,我们定义了一个名为 INFO 的列表,显示了有关每个操作的信息。然后,我们为 MENU 字典创建了 List() 函数的一个对象。然后,我们创建了一些 StringVar 类的对象并设置了这些对象的初始值。我们使用 Label() 小部件添加了一些标签,并将其 master 参数设置为 menu_frame 框架。然后,我们使用 OptionMenu() 小部件创建了一个下拉菜单,以显示 MENU 字典的键,并将其 master 参数设置为 menu_frame 框架。我们还使用 config() 方法来配置菜单的宽度、背景颜色和锚点。最后,我们使用 grid() 方法以网格格式设置标签和选项菜单的位置。

将小部件添加到 buttons_frame 框架

现在我们将向此框架添加必要的按钮。我们将使用 Button() 小部件向应用程序添加按钮,这将允许用户执行操作、取消操作和访问帮助。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们使用 Button() 小部件向应用程序添加按钮,并将 master 参数设置为 buttons_frame 框架。然后,我们将这些小部件的 command 参数设置为我们之前定义的函数。我们还使用 Label() 小部件向应用程序添加一个空标签,并将 master 参数设置为 buttons_frame 框架。最后,我们使用 grid() 方法以网格格式设置这些按钮和标签的位置。

运行应用程序

我们现在将使用 mainloop() 方法和 Tk() 类的对象来运行应用程序。

让我们考虑以下演示相同内容的代码片段。

文件: appToClose.py

说明

在上面的代码片段中,我们使用 mainloop() 方法和 Tk() 类的对象 gui_root 来运行应用程序。

因此,项目代码现在已完成。我们将保存此 python 程序文件并在命令提示符或终端中运行以下命令以查看输出。

语法

但在看到输出之前,下面显示了“使用 Tkinter 关闭、重启和注销计算机的 GUI”的完整项目代码。

完整的项目代码

以下是“使用 Python 中的 Tkinter 关闭、重启和注销计算机的 GUI”的项目代码。

文件: appToClose.py

输出

GUI to Shut Down, Restart, and Log off computer using Tkinter in Python