匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

【教程】Python GUI编程教程及实战案例

【教程】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编程有更深入的理解和掌握。