开发者社区> 问答> 正文

方法不返回选定的元素

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

展开
收起
kun坤 2019-12-27 17:11:22 305 0
1 条回答
写回答
取消 提交回答
  • 当从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()
    
    2019-12-27 17:11:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载