python - Tkinter 单选按钮奇怪的外观
问题描述
我正在尝试Radiobutton
使用类创建一个集合,但在开始时会检查所有按钮
当我尝试Radiobutton
在创建阶段输入变量时,我收到一条错误消息。
from tkinter import *
SubTests = ['Test 1', 'Test 2', 'Test 3', 'Test 4', 'Test 5', 'Test 6', 'Test 7', 'Test 8', 'Test 9', 'Test 10']
class GUI:
def __init__(self, master=NONE):
self.master = master
rb = [NONE]*len(SubTests)
for i in range(len(SubTests)):
rb[i] = Radiobutton(master, text=SubTests[i], fg='black', value=i)
rb[i].grid(column=0, row=(2 + i), sticky=W, padx=5)
root = Tk()
root.geometry('940x550')
root.resizable(FALSE,FALSE)
root.title("GUI Template")
display = GUI(root)
root.mainloop()
应该出现一个Radiobutton
s Test1, Test2, ..., Test10 未选中,但不是它们都被选中。
解决方案
以下是如何设置按钮以及IntVar
我命名的变量choice
以保存与Radiobutton
当前“推入”(如果有)相对应的值。我还通过在它们前面加上前缀来制作它和类实例的rb
列表实例属性。这将使从类的其他方法中引用它们成为可能,因为所有方法都作为它们的第一个参数自动传递。GUI
self.
self
为了演示如何使用这些实例属性,代码还使用了s 必须指定每次用户更改其状态时调用的“回调”函数的command=
选项。Radiobutton
from tkinter import *
SubTests = ['Test 1', 'Test 2', 'Test 3', 'Test 4', 'Test 5', 'Test 6', 'Test 7',
'Test 8', 'Test 9', 'Test 10']
class GUI:
def __init__(self, master=None):
self.master = master
self.choice = IntVar(value=-1) # Set to a value no button will produce.
self.rb = []
for i, subtest in enumerate(SubTests):
radio_btn = Radiobutton(master, text=subtest, fg='black', value=i,
variable=self.choice, command=self.btn_callback)
radio_btn.grid(column=0, row=i+2, sticky=W, padx=5)
self.rb.append(radio_btn)
def btn_callback(self):
choosen = self.choice.get() # Index of button pressed.
subtest = self.rb[choosen].cget('text') # Button's text.
print('You chose: {}'.format(subtest))
root = Tk()
root.geometry('940x550')
root.resizable(FALSE, FALSE)
root.title("GUI Template")
display = GUI(root)
root.mainloop()
推荐阅读
- reactjs - 如何在渲染后更新状态
- git - Github 桌面/VsCcode 身份验证失败
- javascript - 是否有更简洁的方法来检查变量是否具有类型编号?
- javascript - jQuery这个元素
- typescript - 为什么 tsc 忽略 tsconfig.json 中的 include 和 exclude?
- sql-server - SQL Server 中 where 子句列的多个条件
- c - 子字符串表示——长度还是指向最后一个字节的指针?
- sql-server - 即使基础表中存在数据,SQL Server 视图也是空的
- python - __init__ 类中的 TypeVar 类型提示
- java - Java 数组列表