我试图写一个GUI(实际上是PyMOL插件)与单选按钮。我需要的单选按钮是在一个功能。我有两个问题(如果单选按钮在函数之外,我没有任何问题):
1)最后两个单选按钮看起来是灰色的。(我认为正确的行为应该只有一个检查和无灰色)设置一个不同的默认值(使用ref_value.set())不会改变任何东西
2)当点击提交按钮时,我总是得到默认值(在本例中为"1")。
from Tkinter import *
def __init__(self):
"""this adds the Plugin to the PyMOL menu"""
self.menuBar.addmenuitem('Plugin', 'command',
'Plugin name',
label = 'plugin',
command = lambda : draw_gui())
def draw_gui():
global v
master = Tk()
master.title(' title ')
Button(master, text='Submit', command=submit).pack(side=BOTTOM)
v = StringVar()
v.set(1)
Radiobutton(master, text='option 1', variable=v, value=1).pack(side=LEFT)
Radiobutton(master, text='option 2', variable=v, value=2).pack(side=LEFT)
Radiobutton(master, text='option 3', variable=v, value=3).pack(side=LEFT)
master.mainloop()
def submit():
print v.get()
Thanks in advance
我应该显式地设置master,否则它将使用PyMOL GUI作为master。
v = StringVar(master=master)
PS:感谢Thomas Holder的回答
它适用于我(我复制了您的代码并添加了from Tkinter import *
和if __name__ == "__main__": draw_gui()
行,我认为您也有)。所有的单选按钮都工作了,我在输出中得到了适当的1,2,3。
因此,如果您正在运行相同的代码,则环境存在问题。我在Ubuntu 10.04上安装了Tkinter 73770和Python 2.6.5,并从命令行运行脚本。
您是否正在尝试从IDLE运行它?这通常与使用Tkinter的其他脚本不兼容,因为它是用Tkinter本身编写的。如果是,请尝试从命令行运行。