Tkinter Intvar

Salman Mehmood 2023年1月30日
  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