在Python中赋值OptionMenu变量
我正在做一个菜单系统,用户可以选择日期和地点来访问特定的文件。我知道这需要为每个特定文件写很多硬编码的内容。我想使用一个选项菜单系统。我现在能打印出一些值,但我该如何定义这些值,并通过一个函数来打开那个特定的文件呢?我在想用一个很长的if else语句来处理这个问题。(比如,如果是星期一并且是选项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
@JustForFun,你的问题有点复杂,让人有点难以理解,但我想我明白你想要什么。首先,你把最后一部分放错地方了(从 #assign variable x to return values
开始),这段代码会在一开始就运行,而不是在点击 ok
按钮后运行,所以 x
总是等于 'Select day'
(这就是你运行时看到 more
被打印出来的原因)。你应该把这段代码放在一个函数里,然后在 ok()
中调用,或者直接放在 ok()
里:
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'
这样在点击 ok
时就能获取 x
的值并进行测试,这样可以进行更多的操作,比如用得到的结果打开一个文件等等。但是,我觉得你在最后一部分的 if/elif
语句上有点急躁,因为第一个 if...:
会选择小于 2 的项(<),所以接下来的两个 elif
语句不会被判断为真。你是想在第一个语句中用(>)吗?另外,你可能还需要在 if/elif
语句中包含第二个选项菜单的变量:
if x > 2 and y == ...:
# open specific file? etc...