我正在开发一个菜单系统,允许用户选择日期和位置来访问特定文件。我知道每个特定文件都会有很多硬编码。我想使用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”,这表明我能够访问正确的结果,但我在下一步中实现该变量(星期二)时迷失了方向。
提前谢谢
答案 0 :(得分:0)
#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...
我希望这对你有所帮助,不确定这是否是你想要的,如果不是只是说并指出我正确的方向,欢呼。