以下是一些示例代码,它创建了4个Radiobutton
,其中2个使用int
,另外2个使用str
:
from tkinter import *
class test:
def __init__(self):
wind = Tk()
frame1 = Frame(wind)
frame1.pack()
self.v1 = IntVar()
self.v2 = StringVar()
int1 = Radiobutton(frame1, text = 'int1', variable = self.v1, value = 1,
command = self.ipress)
int2 = Radiobutton(frame1, text = 'int2', variable = self.v1, value = 2,
command = self.ipress)
str1 = Radiobutton(frame1, text = 'str1', variable = self.v2, value = '1',
command = self.spress)
str2 = Radiobutton(frame1, text = 'str2', variable = self.v2, value = '2',
command = self.spress)
int1.grid(row = 1, column = 1)
int2.grid(row = 1, column = 2)
str1.grid(row = 2, column = 1)
str2.grid(row = 2, column = 2)
str1.deselect() #this didn't fix it
str2.deselect()
def ipress(self):
print('int'+str(self.v1.get()))
def spress(self):
print('str'+self.v2.get())
test()
运行后,我有一个看起来像这样的框:
![](https://istack.dev59.com/Kihgw.webp)
str
的开始被选中,而 int
的则没有。这是为什么?有解决方法吗?我知道我可以通过使用数字值然后将它们转换为字符串来解决问题,但我想先了解为什么会发生这种情况。Windows 10。
编辑:为了澄清,按钮在被点击后仍然正常工作。
self.v2.set(None)
。 - Robᵩ