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()
輸出:
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