GUI编程是令人兴奋和有趣的!
Python 标准库中的tkinter 模块是一个 GUI 工具包,我们可以用它来在我们的程序中创建图形用户界面,可以在不同的操作系统中移植。
有一些第三方库可以让你创建GUI界面,但tkinter 是与Python集成的一个,所以它是我们要解释的一个。
让我们从一个简单的打印标签的应用程序开始玩吧
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello, World!", padx=10, pady=10)
label.pack()
root.mainloop()
从终端运行该程序。
你会很快看到一个窗口显示出来。这是它在macOS上的样子。

根据你的操作系统,你会看到不同的情况。
你可以调整窗口的大小,隐藏它,也可以让它全屏。

当窗口打开时,你从终端开始的Python进程仍然是活动的。按红色 (x) 按钮关闭窗口,你会看到终端程序存在。
与大多数 CLI (命令行界面) 应用程序相反,GUI 应用程序总是在等待用户事件,如鼠标或键盘事件,它们只在明确关闭时退出。
现在你看到了魔法的发生,让我们来谈谈这个程序。它只有5行代码,却为我们打开了GUI的世界。
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello, World!", padx=10, pady=10)
label.pack()
root.mainloop()
我们导入tkinter 模块,为了方便起见,我们把它重命名为tk 。
然后我们用tk.Tk() 来初始化一个顶层的窗口。
我们用tk.Label() widget构造函数初始化一个标签,将root 顶层widget作为第一个参数,并添加一些其他信息,如要显示的文本和一些填充。
然后我们把标签打包(我们把它加到它的父部件上),然后我们调用root.mainloop() ,启动tkinter事件循环,它将管理应用程序的生命周期。
如果你愿意,你也可以单独从tkinter ,这样你就不必每次都用前缀来导入每个项目。
from tkinter import Tk, Label
root = Tk()
label = Label(root, text="Hello, World!", padx=10, pady=10)
label.pack()
root.mainloop()
我提到了widget。标签是一个部件,但我们有很多这样的部件。其他我们会经常使用的有:Text,Entry,Button,StringVar,Canvas,Frame,PhotoImage,Scrollbar,Menu, 以及更多!
让我们建立一个简单的程序。该程序启动后生成一个随机数。我们将放置一个输入框,用户可以在其中输入一个数字,按下一个按钮,我们将检查它是否是中奖号码!
我们将使用Label,Entry 和Button 小工具来创建这个用户界面。

当Guess! 按钮被按下时,我们调用一个guess() 函数,以获得输入框的值,并检查它是否等于我们用random.randint() 产生的随机数字。
如果数字是正确的,我们就会显示一条信息,内容是 messagebox,然后我们就退出这个程序。

下面是完整的程序。
from tkinter import Tk, Label, Entry, Button, messagebox
import random
n = random.randint(1,10)
print(n)
root = Tk()
label = Label(root, text="Guess a number between 1 and 10!", padx=10, pady=10)
label.pack()
ent = Entry(root)
ent.pack()
def guess():
try:
num = int(ent.get())
except ValueError:
print('Invalid value. Please enter a number')
else:
if num == n:
print('WON!')
messagebox.showinfo(title='You won!', message='You guessed the number!')
root.destroy()
else:
print('Wrong number ' + str(num))
messagebox.showerror(title='Wrong!', message='Try again!')
widget = Button(root, text='Guess!', command=guess)
widget.pack()
root.mainloop()
这些只是tkinter 的基础知识。要了解的东西还有很多,但我希望这能让你开始学习GUI编程。