Tkinter,我有一些问题我想要检索一个选项菜单的选择项时按一个按钮,但是当测试funcionality小testfuntion getdataset,我只得到预定义datavariable (“Birthdata”)作为输出所以似乎datavariable.get()方法不返回optionmenu选中的选项。我到处找,但似乎找不到答案。任何帮助都很感激。 带有选项菜单的代码
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
我女 问题来源StackOverflow 地址:/questions/59382408/tkinter-option-menu-variable-get-method-not-returning-selected-element
当从OptionMenu中选择一个选项时,应该会出现一个错误。 具体地说:
TypeError: getdataset() takes 0 positional arguments but 1 was given
为了解决这个问题,我们可以添加一个参数来处理这个问题。更新你的功能看起来像这样:
def getdataset(_=None):
这是因为您的两个不同的命令是如何与这个函数交互的。当调用函数时,OptionMenu命令会向函数发送一个参数,而按钮命令则不会。这在一开始并不明显,但如果你这样写:
def getdataset(arg=None):
print(arg)
您将看到,当您按下按钮时,它将打印None,当您从菜单中选择某些内容时,它将打印所选内容的值。 你的代码应该是这样的:
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()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。