Tkinter Intvar

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

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

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


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

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

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

from tkinter import *

创建 Tk、title 和 geometry 的对象后,我们需要创建 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()

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

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

如果我们使用错误处理技术键入无效输入,try 和 except 块将阻止整个程序崩溃。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 计算两个数字的和

查看笔记

扫码一下
查看教程更方便