【教程】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类,它继承自tkinter.Tk类。在__init__函数中,我们设置了窗口的标题,并创建了一个文本框来显示计算结果。然后,我们创建了各个按钮,并使用grid方法将它们插入到窗口中。
在add_number函数中,将用户输入的数字插入到文本框中。在add函数中,获取用户输入的第一个数字,并将加号的标记设置为“addition”。在calculate函数中,如果之前有进行加法运算,那么获取用户输入的第二个数字,并计算它们的和。在clear函数中,清空文本框。
最后,在主函数中创建了一个Calculator对象,并使用Tkinter的主循环持续运行该程序。
总结
本文介绍了Python GUI编程的基础知识,并使用Tkinter编写了一个简单的计算器。通过学习本文,希望可以对Python GUI编程有更深入的理解和掌握。