📜  tkinter 应用程序示例代码 - Python (1)

📅  最后修改于: 2023-12-03 14:48:00.186000             🧑  作者: Mango

tkinter 应用程序示例代码 - Python

简介

Tkinter 是 Python 内置的 GUI 库,它提供了创建 GUI 应用程序的标准方法。它具有易于使用、跨平台、稳定可靠等优点,是构建桌面应用程序的常用工具之一。

本文将分享一个使用 Tkinter 创建的简单计算器应用程序的代码示例,将帮助程序员更好地理解 Tkinter 应用程序的开发过程和实现方式,也将激发您对 Tkinter 应用程序开发的兴趣。

示例代码
import tkinter as tk

class CalculatorApp:
    def __init__(self, master):
        self.master = master
        master.title("简单计算器")

        self.display_text = tk.StringVar()
        self.display_text.set("")
        self.display = tk.Label(master, textvariable=self.display_text, width=15, font=("Consolas", 18), padx=4, pady=4, bd=4, bg="white", relief="sunken")
        self.display.grid(row=0, column=0, columnspan=4)

        button_colors = ["#ffffe0", "#d1e7f9", "#ffe5e5", "#e5ffe5", "#fff5e5"]

        button_texts = [
            "AC", "+/-", "%", "/",
            "7", "8", "9", "*",
            "4", "5", "6", "-",
            "1", "2", "3", "+",
            "0", ".", "="
        ]

        row_num = 1
        col_num = 0

        for i, text in enumerate(button_texts):
            button = tk.Button(master, text=text, width=5, height=2, bg=button_colors[i // 4], font=("Consolas", 14), command=lambda text=text: self.on_button_click(text))
            button.grid(row=row_num, column=col_num, padx=4, pady=4)

            col_num += 1
            if (i + 1) % 4 == 0:
                row_num += 1
                col_num = 0

    def on_button_click(self, text):
        if text == "AC":
            self.display_text.set("")
        elif text == "+/-":
            if len(self.display_text.get()) > 0 and self.display_text.get()[0] == "-":
                self.display_text.set(self.display_text.get()[1:])
            else:
                self.display_text.set("-" + self.display_text.get())
        elif text == "%":
            self.display_text.set(str(float(self.display_text.get()) / 100))
        elif text == "=":
            try:
                result = str(eval(self.display_text.get()))
                self.display_text.set(result)
            except:
                self.display_text.set("Error")
        else:
            self.display_text.set(self.display_text.get() + text)

root = tk.Tk()
app = CalculatorApp(root)
root.mainloop()
解读代码

本示例代码演示了如何使用 Tkinter 创建一个简单的计算器应用程序。该应用程序包括一个数字显示框和一系列数字、运算符按钮,用户在显示框中输入数字和运算符,点击按钮即可进行计算。

CalculatorApp

应用程序通过 CalculatorApp 类来实现。在构造方法中,我们首先创建了一个名为 display_text 的字符串变量,它用于保存用户在数字显示框中输入的文本。我们还使用 Label 控件创建了一个数字显示框,并将 display_text 绑定到该控件中,实现了数字的动态更新。

class CalculatorApp:
    def __init__(self, master):
        self.master = master
        master.title("简单计算器")

        self.display_text = tk.StringVar()
        self.display_text.set("")
        self.display = tk.Label(master, textvariable=self.display_text, width=15, font=("Consolas", 18), padx=4, pady=4, bd=4, bg="white", relief="sunken")
        self.display.grid(row=0, column=0, columnspan=4)
数字、运算符按钮

接着我们使用 Button 控件创建了一系列数字、运算符按钮,并将它们放置在网格布局中。其中,我们设置了每个按钮的位置、样式、文字、背景色和回调函数,实现用户在按钮上的点击操作。

button_texts = [
    "AC", "+/-", "%", "/",
    "7", "8", "9", "*",
    "4", "5", "6", "-",
    "1", "2", "3", "+",
    "0", ".", "="
]

button_colors = ["#ffffe0", "#d1e7f9", "#ffe5e5", "#e5ffe5", "#fff5e5"]

row_num = 1
col_num = 0

for i, text in enumerate(button_texts):
    button = tk.Button(master, text=text, width=5, height=2, bg=button_colors[i // 4], font=("Consolas", 14), command=lambda text=text: self.on_button_click(text))
    button.grid(row=row_num, column=col_num, padx=4, pady=4)

    col_num += 1
    if (i + 1) % 4 == 0:
        row_num += 1
        col_num = 0
回调函数

最后,我们创建了 on_button_click 方法作为按钮的回调函数,在用户点击按钮时被调用。当用户点击数字、运算符按钮时,我们将按钮的文本内容以字符串的形式追加到数字显示框的文本末尾;当用户点击“AC”按钮时,我们将数字显示框的文本清空;当用户点击“+/-”按钮时,我们将数字显示框的文本字符串前加上一个负号,或将其移除;当用户点击“%”按钮时,我们将数字显示框中的数字转换为百分数形式;当用户点击“=”按钮时,我们使用 eval 函数对数字显示框的文本字符串做求值处理,并将结果显示在数字显示框中;当出现计算错误时,我们在数字显示框中显示错误信息。

def on_button_click(self, text):
    if text == "AC":
        self.display_text.set("")
    elif text == "+/-":
        if len(self.display_text.get()) > 0 and self.display_text.get()[0] == "-":
            self.display_text.set(self.display_text.get()[1:])
        else:
            self.display_text.set("-" + self.display_text.get())
    elif text == "%":
        self.display_text.set(str(float(self.display_text.get()) / 100))
    elif text == "=":
        try:
            result = str(eval(self.display_text.get()))
            self.display_text.set(result)
        except:
            self.display_text.set("Error")
    else:
        self.display_text.set(self.display_text.get() + text)
结语

本文介绍了一个基于 Tkinter 库开发的简单计算器应用程序的示例代码。通过学习本文,相信您已经掌握了使用 Tkinter 库创建应用程序的方法和技巧,可以基于本示例代码进一步开发更加复杂的应用程序。