Tkinter 选项菜单 Variable.get() 方法不返回所选元素
Tkinter Option Menu Variable.get() method not returning selected element
我在使用 Tkinter 时遇到了一些问题,我想要在按下按钮时检索选项菜单中的选定项,但是在使用小型测试函数 'getdataset' 测试功能时,我只得到预定义的数据变量 ( 'Birthdata') 作为输出,因此 datavariable.get() 方法似乎没有返回选项菜单中的选定选项。我到处都看过,但似乎找不到答案。感谢任何帮助。
带有选项菜单的代码
root = Tk()
root.configure(background='white')
def getdataset():
print(datavariable.get())
datavariable = StringVar(root)
datavariable.set('Birthdata')
PickData = OptionMenu(root, datavariable,'Birthdata', 'Marriagedata', 'Deathdata',command=getdataset)
PickData.grid(column=1,columnspan=2,row=1)
点击按钮初始化测试函数的代码:
wordcloud = Button(root, text = 'Word Cloud', bg='white', width=20, height = 5, command=getdataset)
多次点击按钮后的输出:
Birthdata
Birthdata
Birthdata
我
当select从您的 OptionMenu 中选择一个选项时,您应该会收到一个错误消息。
具体来说:
TypeError: getdataset() takes 0 positional arguments but 1 was given
为了解决这个问题,我们可以添加一个参数来处理这个问题。将您的函数更新为如下所示:
def getdataset(_=None):
这是因为您的 2 个不同 commands
与此功能的交互方式。 OptionMenu 命令在 Button 命令未被调用时向函数发送参数。起初这并不明显,但如果你写这样的东西:
def getdataset(arg=None):
print(arg)
您会看到,当您按下按钮时,它会打印 None
,当您从菜单中选择 select 时,它会打印 selection 的值。
您的代码应如下所示:
import tkinter as tk
def getdataset(_=None):
print(datavariable.get())
root = tk.Tk()
root.configure(background='white')
datavariable = tk.StringVar(root)
datavariable.set('Birthdata')
tk.OptionMenu(root, datavariable, 'Birthdata', 'Marriagedata', 'Deathdata', command=getdataset).grid()
tk.Button(root, text='Word Cloud', bg='white', width=20, height=5, command=getdataset).grid()
root.mainloop()
我在使用 Tkinter 时遇到了一些问题,我想要在按下按钮时检索选项菜单中的选定项,但是在使用小型测试函数 'getdataset' 测试功能时,我只得到预定义的数据变量 ( 'Birthdata') 作为输出,因此 datavariable.get() 方法似乎没有返回选项菜单中的选定选项。我到处都看过,但似乎找不到答案。感谢任何帮助。
带有选项菜单的代码
root = Tk()
root.configure(background='white')
def getdataset():
print(datavariable.get())
datavariable = StringVar(root)
datavariable.set('Birthdata')
PickData = OptionMenu(root, datavariable,'Birthdata', 'Marriagedata', 'Deathdata',command=getdataset)
PickData.grid(column=1,columnspan=2,row=1)
点击按钮初始化测试函数的代码:
wordcloud = Button(root, text = 'Word Cloud', bg='white', width=20, height = 5, command=getdataset)
多次点击按钮后的输出:
Birthdata
Birthdata
Birthdata
我
当select从您的 OptionMenu 中选择一个选项时,您应该会收到一个错误消息。
具体来说:
TypeError: getdataset() takes 0 positional arguments but 1 was given
为了解决这个问题,我们可以添加一个参数来处理这个问题。将您的函数更新为如下所示:
def getdataset(_=None):
这是因为您的 2 个不同 commands
与此功能的交互方式。 OptionMenu 命令在 Button 命令未被调用时向函数发送参数。起初这并不明显,但如果你写这样的东西:
def getdataset(arg=None):
print(arg)
您会看到,当您按下按钮时,它会打印 None
,当您从菜单中选择 select 时,它会打印 selection 的值。
您的代码应如下所示:
import tkinter as tk
def getdataset(_=None):
print(datavariable.get())
root = tk.Tk()
root.configure(background='white')
datavariable = tk.StringVar(root)
datavariable.set('Birthdata')
tk.OptionMenu(root, datavariable, 'Birthdata', 'Marriagedata', 'Deathdata', command=getdataset).grid()
tk.Button(root, text='Word Cloud', bg='white', width=20, height=5, command=getdataset).grid()
root.mainloop()