![](/img/trans.png)
[英]Python 2.7 Tkinter - Determine which Radiobutton has been selected
[英](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變量子類有幾種類型( IntVar
, BooleanVar
等),每種都有其get
和set
方法,它們的行為完全符合您的期望(如下所示)。
# 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.