在python中分配OptionMenu变量

时间:2014-08-18 18:51:19

标签: python tkinter optionmenu

我正在开发一个菜单系统,允许用户选择日期和位置来访问特定文件。我知道每个特定文件都会有很多硬编码。我想使用OptionMenu系统。我正在打印值,但是我如何定义这些值并通过函数传递它们以打开该特定文件。我在想一个很长的if if声明。 (IE如果星期一&& a然后通过这个呼叫功能)。

这是我的代码

#mainmenu
class MyOptionMenu(OptionMenu):
 def __init__(self, master, status, *options):
    self.var = StringVar(master)
    self.var.set(status)
    OptionMenu.__init__(self, master, self.var, *options)
    self.config(font=('calibri',(20)),bg='white',width=20)
    self['menu'].config(font=('calibri',(10)),bg='white')

root = Tk()
#attemtping to assign numerical values
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
mymenu1 = MyOptionMenu(root, 'Select day', 'Monday','Tuesday','Wednesday', 'Thursday', 'Friday')
mymenu2 = MyOptionMenu(root, 'Select Location', 'd','e','f')
#menus come up fine and values correctly printed
def ok():
print "value is", (mymenu1.var).get(), (mymenu2.var).get()
button = Button(root, text="OK", command=ok)
button.pack()
mymenu1.pack()
mymenu2.pack()
(mymenu1.var).get()
(mymenu2.var).get()
#assign variable x to return values
x = (mymenu1.var).get()
if x <2:
    print 'Negative changed to zero'
elif x == 0:
    print 'Zero'
elif x == 1:
    print 'Single'
else:
    print 'More'

root.mainloop()

我将此作为输出     “更多”/     “值是星期一e”,这表明我能够访问正确的结果,但我在下一步中实现该变量(星期二)时迷失了方向。

提前谢谢

1 个答案:

答案 0 :(得分:0)

@JustForFun,你的问题有点纠结,有点难以思考,但我想我明白你想要什么。 首先,您将最后一部分放在错误的位置(来自#assign variable x to return values),这将在开始时运行,但不会在点击ok按钮后运行,因此x将始终等于'Select day'(因此当你运行它时会打印more),你应该将它放在一个函数中,以便在ok()ok()本身中调用:< / p>
def ok():
    print "value is", (mymenu1.var).get(), (mymenu2.var).get()
    x = (mymenu1.var).get()
    if x <2:
        print 'Negative changed to zero'
    elif x == 0:
        print 'Zero'
    elif x == 1:
        print 'Single'
    else:
        print 'More'

这将获得x的值并在单击ok时测试它,并且它可以导致更多操作,例如使用获得的结果来打开文件等。但是,你(我认为)只是冲了将if/elif等语句作为第一个if...:的最后一部分将选择低于2(&lt;)的项目,因此接下来的两个elif语句不会评估为是的,你打算在第一个语句中有(&gt;)吗? 您还可能需要在if/elif语句中为第二个选项菜单包含一个变量:

if x > 2 and y == ...:
    # open specific file? etc...

我希望这对你有所帮助,不确定这是否是你想要的,如果不是只是说并指出我正确的方向,欢呼。