【问题标题】:Tkinter OptionMenu argumentsTkinter OptionMenu 参数
【发布时间】:2016-07-23 00:33:04
【问题描述】:

我喜欢明确指定参数。例如:

def func(a, b):
    return a+b

任何时候我都会写:

func(a=6, b=7)

代替:

func(6, 7)

我不能用 Tkinter 中的 OptionMenu 类来做到这一点。以下示例在自定义类中

self.var = tk.StringVav()
choices = ['op1', 'op2']
self.menu_m = tk.OptionMenu(master=self.frame_1, variable=self.var, *choices)

这会导致参数“master”有多个值。如何明确定义要使用的主选项、变量和选项列表?

【问题讨论】:

  • 您可能遗漏了一个论点,value = 'op1'
  • 当你尝试这个 variable 时它不起作用:variable = self.var raises TypeError。错误的正文说:__init__() got multiple values for argument 'variable'.

标签: python tkinter optionmenu


【解决方案1】:

不幸的是,OptionMenu 小部件的实现有些糟糕。无论您的偏好如何,选项菜单都不会接受前三个参数mastervariablevalue 的关键字参数。它们必须按照位置参数的顺序呈现。

self.menu_m = tk.OptionMenu(self.frame_1, self.var, *choices)

【讨论】:

  • 你为什么写.., choices[0], *choices)而不是..., *choices)?似乎前者会导致第一个菜单项出现两次。
  • @martineau:我显然很困惑。可惜tk和ttk的OptionMenus有细微的差别,当时想必也一直在想ttk的optionmenu。 ttk.OptionMenu 在位置参数之后立即采用一个名为 default 的附加关键字参数。我会修复答案。
猜你喜欢
  • 2021-06-28
  • 2021-03-09
  • 2021-03-09
  • 2022-01-21
  • 2017-12-31
  • 2020-12-28
  • 2016-03-03
  • 1970-01-01
  • 2018-10-10
相关资源
最近更新 更多