Tkinter OptionMenu 无法正确显示

Posted

技术标签:

【中文标题】Tkinter OptionMenu 无法正确显示【英文标题】:Tkinter OptionMenu not displaying properly 【发布时间】:2018-10-10 01:37:09 【问题描述】:

我正在尝试创建一个带有下拉选择菜单的 tkinter GUI。下拉菜单未完全显示,仅在选择某些内容时才显示完整栏(见下图)。

选项菜单是用类似下面的代码创建的:

startmonth = StringVar()
p1_PubStartMonth = OptionMenu(DateStartFrame, startmonth, "January", "February", "March", "April",
                                                          "May", "June", "July", "August", "September",
                                                          "October", "November", "December")
p1_PubStartMonth.configure(width=10, bg=_active)
p1_PubStartMonth.grid(row=5, column=1)

有谁知道是什么原因导致这些小部件以这种方式显示?

【问题讨论】:

您希望在做出任何选择之前显示月份吗?如果是这样,我相信你可以这样做: startmonth.set('January') @cjonesrun ,在做出选择之前我不需要显示一个月,我只想知道哪些类型的东西可能会干扰按钮的外观,就像我的截图中一样 【参考方案1】:

我得到了他的错误:NameError: name '_active' is not defined,当我从 .configure 中删除 bg=_active 时,它就很好了。

还有; OptionMenu 的行为略有不同,具体取决于您是从 Tkinter 还是 Ttk 获得的。

加法

由于我还没有看到您的所有代码,因此我将包含一些适合我的代码。如果这对你有用,那么你就有了一些可以建立的基础。

from tkinter import *
import tkinter.ttk as ttk

DateStartFrame = Tk()
startmonth = StringVar()
p1_PubStartMonth = ttk.OptionMenu(DateStartFrame, startmonth,
                              "January", "February", "March", "April",
                              "May", "June", "July", "August", "September",
                              "October", "November", "December")
p1_PubStartMonth.configure(width=10)
p1_PubStartMonth.grid()

【讨论】:

是的,_active 是我项目中包含十六进制颜色代码的变量。我应该将其包含在示例中。但是在我的代码中,按钮仍然没有显示在屏幕截图中。

以上是关于Tkinter OptionMenu 无法正确显示的主要内容,如果未能解决你的问题,请参考以下文章

Python3 tkinter基础 OptionMenu 将list导入下拉列表中

Python3 tkinter基础 OptionMenu 点击按钮,出现单选的下拉列表

Tkinter StringVar 获取所选选项的索引

有没有办法在 tkinter 中正确显示标签边框?

Python - 从Tkinter回调返回

Tkinter无法连接显示“:0”