我正在尝试用单选按钮编写一个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()
提前致谢
答案 0 :(得分:2)
我应该显式设置master,否则它将使用PyMOL GUI作为master。
v = StringVar(master=master)
PS:感谢Thomas Holder的回答。
答案 1 :(得分:0)
它对我有用(我复制了你的代码并添加了from Tkinter import *
和if __name__ == "__main__": draw_gui()
这些我认为你也有的行。所有单选按钮都工作,我在输出中得到1,2,3。
因此,如果您运行相同的代码,则环境存在问题。我在Ubuntu 10.04上安装了Tkinter 73770和Python 2.6.5,并且从命令行运行脚本。
你是否想尝试从IDLE运行它?对于使用Tkinter的其他脚本来说,这通常不会很好,因为它是用Tkinter本身编写的。如果是这样,请尝试从命令行运行。