【问题标题】:How to get tkinter OptionMenu to display the name of the selected option?如何让 tkinter OptionMenu 显示所选选项的名称?
【发布时间】:2020-06-17 05:40:31
【问题描述】:

tkinter 中,我使用OptionMenu 类创建了一个选项菜单。例如,下面的OptionMenuABCD 等选项:

self.clicked = tk.StringVar(self.parent)
self.clicked.set("Select Column")

self.drop = tk.OptionMenu(self.parent, self.clicked, 'Select Column', command=self.idle)
    for i in columnNames[:]:
        self.drop['menu'].add_command(label=i, command=tk._setit(self.clicked, i, self.select_data))
self.drop.pack()

注意:函数self.idle 只是一个lambda *args: None

函数self.select_data如下:

def select_data(self):
    for col_name in df.columns:
        if col_name == self.clicked.get():
            self.option_display = col_name

函数self.select_data 只是检索用户从OptionMenu 中选择的选项,但是如何更新OptionMenu 以显示在self.select_data 中选择的选项?

例如,如果用户选择选项A,我将如何更新OptionMenu 以将A 显示为已选择?

【问题讨论】:

  • 在您的情况下,self.selectData() 应该期望一个参数,即所选项目。
  • 究竟是什么论据?我有点困惑...在self.selectData(),我正在尝试从OptionMenu 中打印出选定的选项。
  • selectData 函数应该是这样的:def selectData(self, selected) 其中selected 将是OptionMenu 的选定项。或者你可以在函数内部使用self.clicked.get()来获取选中的项目。
  • 如果我要执行def selectData(self, selected),那么里面的代码会不会只是通过调用self.selectData(self.clicked) 而变成print(selected.get())。此外,self.clicked.get() 为我工作。

标签: python tkinter optionmenu tkinter.optionmenu


【解决方案1】:

selectData() 函数应具有以下签名:

def selectData(self, selected):
    print(selected)
    # or print(self.clicked.get())

【讨论】:

    【解决方案2】:

    这会将下拉选择打印到控制台。但我的建议是避免在基于 GUI 的应用程序中使用控制台。创建一个文本指示器并打印输出到它

    from tkinter import *
    tk = Tk()
    def OptionMenu_SelectionEvent(event):
        print(var.get())
        pass
    var = StringVar(); var.set("one")
    options = ["one", "two", "three"]
    OptionMenu(tk, var, *(options), command = OptionMenu_SelectionEvent).pack()
    tk.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-10
      • 2017-12-27
      • 2015-09-23
      • 1970-01-01
      • 2019-07-04
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多