tkinter单选按钮在功能内部不起作用

时间:2011-08-02 22:42:32

标签: python function radio-button tkinter

我正在尝试用单选按钮编写一个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()

提前致谢

2 个答案:

答案 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本身编写的。如果是这样,请尝试从命令行运行。