【教程】Python GUI编程教程及实战案例 前言 Python作为一门高级编程语言,自然可以用于编写GUI程序。Python的GUI编程模块丰富多样,常用的有Tkinter、PyQt、wxPython等。本文将以Tkinter为例,为大家详细讲解Python GUI编程的基础知识,并提供一个实战案例供大家参考。 Tkinter简介 Tkinter是Python自带的GUI编程模块,它是基于Tk工具包开发的。Tk是一个图形用户界面工具包,开发者可以使用Tk作为一种高级功能扩展,从而使用户可以在应用程序中使用图形界面。Tkinter提供了许多常用的组件,例如按钮、标签、文本框、列表框、菜单、滚动框等,使用起来非常方便。 Tkinter的组件 在Tkinter中,常用的组件有: - Label:标签,显示文本或图像。 - Button:按钮,可以绑定函数。 - Entry:文本框,可以输入文字。 - Text:文本区域,可以输入多行文字。 - Listbox:列表框,显示多条选项。 - Checkbutton:复选框,可以选择多个选项。 - Radiobutton:单选框,只能选择一个选项。 - Scale:滑块,可以拖动改变值。 - Scrollbar:滚动条,用于滚动文本或列表框。 - Menu:菜单,显示多个选项。 - Canvas:画布,可以绘制图形。 Tkinter实战案例 下面我们将使用Tkinter编写一个简单的GUI程序,实现一个计算器的功能。 首先,创建一个文件calculator.py,输入以下代码: ```python import tkinter as tk class Calculator: def __init__(self, master): self.master = master master.title("Calculator") # 创建文本框 self.display = tk.Entry(master, width=30, borderwidth=5, font=('Arial', 16)) self.display.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # 创建按钮 self.button_1 = tk.Button(master, text='1', padx=40, pady=20, command=lambda: self.add_number(1)) self.button_2 = tk.Button(master, text='2', padx=40, pady=20, command=lambda: self.add_number(2)) self.button_3 = tk.Button(master, text='3', padx=40, pady=20, command=lambda: self.add_number(3)) self.button_4 = tk.Button(master, text='4', padx=40, pady=20, command=lambda: self.add_number(4)) self.button_5 = tk.Button(master, text='5', padx=40, pady=20, command=lambda: self.add_number(5)) self.button_6 = tk.Button(master, text='6', padx=40, pady=20, command=lambda: self.add_number(6)) self.button_7 = tk.Button(master, text='7', padx=40, pady=20, command=lambda: self.add_number(7)) self.button_8 = tk.Button(master, text='8', padx=40, pady=20, command=lambda: self.add_number(8)) self.button_9 = tk.Button(master, text='9', padx=40, pady=20, command=lambda: self.add_number(9)) self.button_0 = tk.Button(master, text='0', padx=40, pady=20, command=lambda: self.add_number(0)) self.button_add = tk.Button(master, text='+', padx=39, pady=20, command=self.add) self.button_equal = tk.Button(master, text='=', padx=91, pady=20, command=self.calculate) self.button_clear = tk.Button(master, text='Clear', padx=79, pady=20, command=self.clear) # 显示按钮 self.button_1.grid(row=1, column=0) self.button_2.grid(row=1, column=1) self.button_3.grid(row=1, column=2) self.button_4.grid(row=2, column=0) self.button_5.grid(row=2, column=1) self.button_6.grid(row=2, column=2) self.button_7.grid(row=3, column=0) self.button_8.grid(row=3, column=1) self.button_9.grid(row=3, column=2) self.button_0.grid(row=4, column=0) self.button_clear.grid(row=4, column=1, columnspan=2) self.button_add.grid(row=5, column=0) self.button_equal.grid(row=5, column=1, columnspan=2) self.first_number = None self.math = None def add_number(self, number): current = self.display.get() self.display.delete(0, tk.END) self.display.insert(0, str(current) + str(number)) def add(self): self.first_number = float(self.display.get()) self.math = "addition" self.display.delete(0, tk.END) def calculate(self): if self.math == "addition": second_number = float(self.display.get()) self.display.delete(0, tk.END) self.display.insert(0, self.first_number + second_number) def clear(self): self.display.delete(0, tk.END) root = tk.Tk() my_calc = Calculator(root) root.mainloop() ``` 然后,在命令行中运行该脚本,就可以看到一个简单的计算器界面: ![calculator.png](https://cdn.nlark.com/yuque/0/2021/png/1275995/1632477965230-0070f9cc-782d-405e-ba10-1c011810779a.png) 代码解析 首先我们创建一个Calculator类,它继承自tkinter.Tk类。在__init__函数中,我们设置了窗口的标题,并创建了一个文本框来显示计算结果。然后,我们创建了各个按钮,并使用grid方法将它们插入到窗口中。 在add_number函数中,将用户输入的数字插入到文本框中。在add函数中,获取用户输入的第一个数字,并将加号的标记设置为“addition”。在calculate函数中,如果之前有进行加法运算,那么获取用户输入的第二个数字,并计算它们的和。在clear函数中,清空文本框。 最后,在主函数中创建了一个Calculator对象,并使用Tkinter的主循环持续运行该程序。 总结 本文介绍了Python GUI编程的基础知识,并使用Tkinter编写了一个简单的计算器。通过学习本文,希望可以对Python GUI编程有更深入的理解和掌握。