Tkinter Intvar

Salman Mehmood 2024年2月15日
  1. 在 Tkinter 中使用 IntVar() 创建一个整数变量
  2. 在 Tkinter 中使用 IntVar() 计算两个数字的和
Tkinter Intvar

Tkinter 包含各种内置程序,它们的行为类似于标准 Python 数据类型,具有用于非常有效地欺骗 Tkinter 的组件(如标签和条目组件)的附加功能,使其与 Python 数据类型不同。

这些更改还包括用于访问和更改其值的 getter 和 setter 方法。

本演示将介绍 IntVar() 数据类型如何工作以及如何在 Tkinter 中将 Entry 组件验证为整数。

在 Tkinter 中使用 IntVar() 创建一个整数变量

在处理 Tkinter 中的 Entry 组件时,我们如何确定是否有人在输入框中键入了数字或字符串值?在 Tkinter 中使用 IntVar() 类创建整数变量非常简单。

所以现在我们将导入 tkinter 以便能够在我们的程序中使用 Tkinter 库。

from tkinter import *

创建 Tktitlegeometry 的对象后,我们需要创建 IntVar() 类的对象,以便它与接受整数数据类型的变量输入进行通信。

first_intvar = IntVar()

我们将创建一个调用 showDatatype() 函数的按钮;此函数显示 first_intvar 对象的数据类型及其值。get() 帮助我们从 Entry 组件中获取对象值。

def showDatatype():
    second_label.config(text=f"{first_intvar.get()}   {type(first_intvar.get())}")

这是这个例子的完整程序。

from tkinter import *

# Create GUI window object of TK
GUI_WINDOW = Tk()
GUI_WINDOW.title("Deltstack")
GUI_WINDOW.geometry("400x300")


def showDatatype():
    second_label.config(text=f"{first_intvar.get()}   {type(first_intvar.get())}")


# Create integer object using IntVar class
first_intvar = IntVar()

first_label = Label(GUI_WINDOW, text="Enter a first number", font=("bold 14"))
first_label.pack()
first_entry = Entry(GUI_WINDOW, textvariable=first_intvar)
first_entry.pack(pady=10)
second_label = Label(GUI_WINDOW, text="")
second_label.pack(pady=10)

total_btn = Button(GUI_WINDOW, text="Total", command=showDatatype)
total_btn.pack(pady=20)

GUI_WINDOW.mainloop()

输出:

在 Tkinter 中使用 IntVar 创建整数变量

正如我们可以看到的输出,IntVar() 数据类型与 Python 内置数据类型没有什么不同,所以现在我们将看另一个有助于在 Tkinter 中计算两个数字之和的示例。

在 Tkinter 中使用 IntVar() 计算两个数字的和

让我们为两个不同的 Entry 组件创建两个 IntVar() 对象。

first_intvar = IntVar()
second_intvar = IntVar()

创建两个不同的标签后,我们需要创建另一个标签,将在 sumTwoNumbers() 函数中用于显示我们的答案。

answer = Label(GUI_WINDOW, text="", font=("itelic 13"))
answer.pack(pady=20)

单击 GUI 窗口上的按钮时,将调用 sumTwoNumbers()

那么当我们在输入框中输入字符串或字符之类的内容时会发生什么?

如果你在其中键入一个单词或一个用户无法接受的字母,它将引发错误。如果我们想弄清楚我们在输入框中输入的内容是否是数字,有很多不同的方法可以做到,但最好的方法是做一个 tryexcept 块。

如果我们使用错误处理技术键入无效输入,tryexcept 块将阻止整个程序崩溃。answer 标签负责显示两个数字的总和或引发的 Exception;这取决于输入。

def sumTwoNumbers():
    try:
        # Try to getting integer values and sum two numbers
        total = first_intvar.get() + second_intvar.get()
        answer.config(text=f"The sum of two numbers is {total}")
    except Exception:
        answer.config(text="Please enter valid values")

这是演示的完整源代码,因此请复制并在你的 PC 上运行。

from tkinter import *

# Create GUI window object of TK
GUI_WINDOW = Tk()
GUI_WINDOW.title("Deltstack")
GUI_WINDOW.geometry("400x300")


def sumTwoNumbers():
    try:
        # Try to getting integer values and sum two numbers
        total = first_intvar.get() + second_intvar.get()
        answer.config(text=f"The sum of two numbers is {total}")
    except Exception:
        answer.config(text="Please enter valid values")


# Create integer object using IntVar class
first_intvar = IntVar()
second_intvar = IntVar()

first_label = Label(GUI_WINDOW, text="Enter a first number", font=("bold 16"))
first_label.pack()
first_entry = Entry(GUI_WINDOW, textvariable=first_intvar)
first_entry.pack(pady=10)
second_label = Label(GUI_WINDOW, text="      Enter a second number", font=("bold 16"))
second_label.pack(pady=10)

second_entry = Entry(GUI_WINDOW, textvariable=second_intvar)
second_entry.pack(pady=10)

total_btn = Button(GUI_WINDOW, text="Total", command=sumTwoNumbers)
total_btn.pack(pady=20)

answer = Label(GUI_WINDOW, text="", font=("itelic 13"))
answer.pack(pady=20)
GUI_WINDOW.mainloop()

输出:

在 Tkinter 中使用 IntVar 计算两个数字的和

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn