簡體   English   中英

(帶JSON的單選按鈕)如何檢查已選擇哪個單選按鈕

[英](Radiobutton with JSON) how to check which Radiobutton has been selected

單擊sort numbers單選按鈕時,我想對數字進行sort numbers 我已經通過單擊單選按鈕時調用一個函數來實現此目的。 但是,我不能不調用函數對數字進行排序。 這是我的代碼

R1=Radiobutton(root,text="Sort Student Numbers",value=1)
R1.pack(anchor=W)
R2=Radiobutton(root,text="Sort Student Names",value=2)
R2.pack(anchor=W)
with open("student.json", "r"") as f:
        data = json.load(f)
        for d in data["student"]:
            if value == 1:
               data["student"].sort(key = lambda d: d["Numbers"])
            elif value == 2:
                 data["student"].sort(key = lambda d: d["Names"])
            label_1 = Label(frame , text="Name: %s" %(d["Names"]))
            label_1.pack()
            label_2 = Label(frame , text="Student Numbers: %d" %(d["Numbers"]))
            label_2.pack()

如果我說例如R1=Radiobutton(root,text="Sort Student Numbers",value=1, command = sorted_numbers(1))一切正常,但是我不想使用函數調用的原因是我必須創建3個功能來實現我想要的。 謝謝

解決此問題的一種方法是將這些單選按鈕綁定到共享的tkinter變量實例。 選擇單選按鈕時,變量的值將設置為單選按鈕的值,然后您可以在代碼中使用該值。

我還沒有時間測試這段代碼,但是我已經復制了您的代碼並以一種可行的方式對其進行了修改。 此代碼假定您正在使用from tkinter import *的行from tkinter import * 否則,您將需要執行類似from tkinter import IntVar tkinter變量子類有幾種類型( IntVarBooleanVar等),每種都有其getset方法,它們的行為完全符合您的期望(如下所示)。

# This is the variable that will store the value of the currently selected radio button
sort_value = IntVar()

# For each radio button, assign sort_value to the keyword parameter "variable"
R1=Radiobutton(root,text="Sort Student Numbers",variable=sort_value,value=1)
R1.pack(anchor=W)
R2=Radiobutton(root,text="Sort Student Names",variable=sort_value,value=2)
R2.pack(anchor=W)

with open("student.json", "r") as f:
        data = json.load(f)
        for d in data["student"]:
            # sort_value is an IntVar, so sort_value.get returns a Python int
            if sort_value.get() == 1:
               data["student"].sort(key = lambda d: d["Numbers"])
            elif sort_value.get() == 2:
                 data["student"].sort(key = lambda d: d["Names"])
            label_1 = Label(frame , text="Name: %s" %(d["Names"]))
            label_1.pack()
            label_2 = Label(frame , text="Student Numbers: %d" %(d["Numbers"]))
            label_2.pack()

編輯 :就像Nae在注釋中指出的那樣,您還可以將變量初始化為默認值,如下所示:

sort_value = IntVar(value=1)

否則,其默認值將為0。我相信,通過將其設置為1,這也會導致默認情況下選中值為1的單選按鈕。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM