Tkinter Intvar
Tkinter 包含各种内置程序,它们的行为类似于标准 Python 数据类型,具有用于非常有效地欺骗 Tkinter 的组件(如标签和条目组件)的附加功能,使其与 Python 数据类型不同。
这些更改还包括用于访问和更改其值的 getter
和 setter
方法。
本演示将介绍 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()
输出结果:
正如我们可以看到的输出,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()
输出结果: