【发布时间】:2020-06-17 05:40:31
【问题描述】:
在tkinter 中,我使用OptionMenu 类创建了一个选项菜单。例如,下面的OptionMenu 有A、B、C、D 等选项:
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