0

我正在尝试从下面给出的 OptionMenu 中获取选定的选项,但我无法全局使用选定的值。

def callback(selection):
    print(selection)
    return selection 
yearl=Label(Frame1, text='Select Year ',font=("Helvetica", 10) ).place(relx=-0.3, rely=-1.40)
valueyear= ['2018', '2019', '2020','2021', '2022', '2023']
n =StringVar(Frame1) 
n.set(valueyear[0])
yearchoosen = OptionMenu(Frame1, n, *valueyear, command=callback).place(relx=0.3, rely=-1.45, 
width=160)

在回调函数中,我得到了正确的选择值,但我也想在其他函数中使用选择值。

4

1 回答 1

2

您可以在函数外部或代码中的任何位置使用该值,并且一切正常,因为您在主块上定义它:

def callback(selection):
    print(n.get())
 
yearl = Label(Frame1, text='Select Year ',font=("Helvetica", 10) )
yearl.place(relx=-0.3, rely=-1.40)

valueyear = ['2018', '2019', '2020','2021', '2022', '2023']
n = StringVar(Frame1) 
n.set(valueyear[0])

yearchoosen = OptionMenu(Frame1, n, *valueyear, command=callback,variable=n)
yearchoosen.place(relx=0.3, rely=-1.45, width=160) #so yearchoosen wont return None

n并且n.get()可以从您的代码的任何地方访问。

要对此进行测试,只需创建一个虚拟函数:

def dummy():
    print('This is the value from the option menu',n.get())

dummy_b = Button(Frame1, text='Dummy',command=dummy)
dummy_b.pack()

单击时,此按钮还将返回从 中选择的值OptionMenu

于 2020-10-25T09:41:04.647 回答