【问题标题】:tkinter option menu wont set titletkinter 选项菜单不会设置标题
【发布时间】:2020-02-21 21:47:49
【问题描述】:

我无法让我的选项菜单显示标题,我已经在其他程序中这样做了,而且效果很好。我什至将工作代码复制到该项目中,但在这里它不起作用。我有什么遗漏吗?

通过按下按钮调用窗口来执行窗口

def agregarEquipo(event=None):
    window = tk.Tk()
    wTitle = 'Example title'
    window.title(wTitle)
    window.configure(bg=bgColor_1)
    window.geometry('%dx%d' % (windX, windY))

    # The option menu
    listaEquipos = ['Equipos'] 
    menuEquipoText = tk.StringVar()
    menuEquipoText.set(listaEquipos[0])
    menuEquipo = tk.OptionMenu(window,menuEquipoText,*'Hello')
    menuEquipo.grid(row=0, column=0)

    window.mainloop()

提前致谢!

【问题讨论】:

  • 哼。这对我有用。您使用什么操作系统/Python 版本?
  • 我得到了它的工作,谢谢。我正在使用 python3.7 顺便说一句

标签: python-3.x tkinter optionmenu


【解决方案1】:

我通过将父小部件作为参数添加到 tk.StringVar() 语句来使其工作。

改变了这个:

 menuEquipoText = tk.StringVar()

到这里:

 menuEquipoText = tk.StringVar(window)

现在一切正常。 无论如何,有人可以向我解释为什么会这样吗?我以前不需要这个

【讨论】:

  • 您的原始代码中不会碰巧有 2 个 Tk 实例吗?
  • 我认为是的,实际上“窗口”在一个函数中设置为window=tk.TK(),该函数通过按下root Tk 小部件中的按钮来调用。有错吗?
  • 是的,这会导致问题。如果你有 2 Tk() 那么你最终会遇到这样的问题。如果没有给出根窗口,任何像StringVar() 这样的 tkinter 方法都会自动查找根窗口的第一个实例。所以最终发生的是它与那个实例而不是第二个实例相关联。通过在此处添加window,您可以使其成为该实例的一部分,这样它就可以工作了。也就是说,如果你确实有两次Tk()
猜你喜欢
  • 2018-08-12
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多