我正在使用 Tkinter 創建一個帶有簡單 UI 的線性回歸工具,今天我一直在嘗試創建一個框架,其中將包含幾件事:第 0 列將包含帶有我從中提取的變數名稱的標簽Excel/CSV 資料集,每個標簽旁邊都有三個單選按鈕,每個按鈕將各自變數的值更改為 1、0 或 2。框架中的一切看起來都不錯,除了一個關鍵事實 - 比如說我有變數 var1、var2、var3,我想將 var1 的值更改為 2。當我單擊并將 var 1 更改為值 2 時,var2 和 var3 也更改為該值。
def variablenameframe():
global column_names #list containing variable names
global variabletype #list which will contain radiobutton values for every variable
variablenameframe=Frame(root)
variablenameframe.pack()
Label(variablenameframe,text="Y").grid(row=0,column=1)
Label(variablenameframe,text="Don't use").grid(row=0,column=2)
Label(variablenameframe,text="X").grid(row=0,column=3)
i=1
for j in range(len(column_names)):
variabletype.append(0)
Label(variablenameframe,text=column_names[j]).grid(row=i,column=0)
Radiobutton(variablenameframe,variable=variabletype[j], value=1).grid(row=i,column=1)
Radiobutton(variablenameframe,variable=variabletype[j], value=0).grid(row=i,column=2)
Radiobutton(variablenameframe,variable=variabletype[j], value=2).grid(row=i,column=3)
i=i 1
代碼結果:
我假設問題是關于通過我還不明白的 for 回圈創建按鈕?我對 Python 和 Tkinter 還是很陌生,所以我不知道從哪里開始,所以任何反饋都將不勝感激。
uj5u.com熱心網友回復:
大部分看起來都不錯。您的關鍵錯誤是沒有為每行創建一個合適的變數。如果是單選按鈕,請使用 tk.IntVar()。此外,為了讓您的代碼更簡潔一些,我會去掉“i”或“j”變數。您的代碼將變為:
def variablenameframe():
...
for i in range(len(column_names)):
variabletype.append(tk.IntVar())
Label(variablenameframe,text=column_names[i]).grid(row=i 1,column=0)
Radiobutton(variablenameframe,variable=variabletype[i], value=1).grid(row=i 1,column=1)
Radiobutton(variablenameframe,variable=variabletype[i], value=0).grid(row=i 1,column=2)
Radiobutton(variablenameframe,variable=variabletype[i], value=2).grid(row=i 1,column=3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/536898.html
