我正在嘗試制作包含“n”個 4 選項問題的考試表。我Radiobutton用回圈創建了“n”組 4 個水平 s。問題是每次選擇某個單選按鈕時,所有其他組的單選按鈕也會切換到該值。eg: For question 1 when option 4 (with value=4) is selected all other sets' Radiobuttons will switch to option 4. I think this is due to them having the same value.
您如何使它們不全部切換?嘗試在回圈結束時將變數設定為Radiobuttonto但它會洗掉原來的值,因此它沒有用(盡管它確實使它們都不會立即切換)。我該怎么辦?IntVarRadiobutton
monokeyholder = IntVar()
for i in range(len(lickey)):
ttk.Label(mainframe, text=(i 1)).grid(row=i 1, column=0)
ttk.Radiobutton(mainframe, value=1, variable=monokeyholder,
command=Sett).grid(row=i 1, column=1)
ttk.Radiobutton(mainframe, value=2, variable=monokeyholder,
command=Sett).grid(row=i 1, column=2)
ttk.Radiobutton(mainframe, value=3, variable=monokeyholder,
command=Sett).grid(row=i 1, column=3)
ttk.Radiobutton(mainframe, value=4, variable=monokeyholder,
command=Sett).grid(row=i 1, column=4)
有沒有辦法讓他們不轉換但也保持他們的價值?我應該使用不同的大師,還是Radiobutton手動做 200 秒(我懷疑這是唯一的方法)。
編輯:Sett被定義為將每個選定按鈕的值附加到串列中。它確實按預期作業。
uj5u.com熱心網友回復:
Tkinter 使用該變數來了解哪些單選按鈕屬于一組。因此,每一行都需要使用自己的IntVar. 管理它們的最簡單方法是將它們存盤在串列中。
解決方案如下所示:
monokeyholder = []
for i in range(len(lickey)):
var = tk.IntVar(value=0)
monokeyholder.append(var)
...
ttk.Radiobutton(..., value=1, variable=var, ...)
ttk.Radiobutton(..., value=2, variable=var, ...)
ttk.Radiobutton(..., value=3, variable=var, ...)
ttk.Radiobutton(..., value=4, variable=var, ...)
有了它,您可以通過以下方式獲取任何行的值:
print(monokeyholder[3].get())
這是一個完整的作業示例。當您運行它時,選中您想要的任何復選框,然后單擊“顯示值”按鈕以查看值。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def show_values():
values.delete("1.0", "end")
for i in range(10):
values.insert("end", f"Row {i 1}: {monokeyholder[i].get()}\n")
maxrows = 10
mainframe = tk.Frame(root)
showbutton = tk.Button(root, text="Show values", command=show_values)
values = tk.Text(root, height=maxrows, width=20)
showbutton.pack(side="bottom")
mainframe.pack(side="left", fill="both", expand=True, padx=10, pady=10)
values.pack(side="right", fill="both", expand=True)
monokeyholder = []
for i in range(maxrows):
var = tk.IntVar()
monokeyholder.append(var)
ttk.Label(mainframe, text=(i 1)).grid(row=i, column=0)
ttk.Radiobutton(mainframe, value=1, variable=var).grid(row=i, column=1)
ttk.Radiobutton(mainframe, value=2, variable=var).grid(row=i, column=2)
ttk.Radiobutton(mainframe, value=3, variable=var).grid(row=i, column=3)
ttk.Radiobutton(mainframe, value=4, variable=var).grid(row=i, column=4)
root.mainloop()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474303.html
