ttk OptionMenu不适合其边界框

1 投票
2 回答
507 浏览
提问于 2025-04-18 17:05

我在Windows上用Python 2.7创建一个Tkinter应用时遇到了问题。简单来说,就是当我创建一个下拉菜单(OptionMenu)时,它右上角的部分(那里有一个向下的箭头,点击后会有反应)被截断了。

下面的代码可以重现这个问题:

from Tkinter import Tk, StringVar
from ttk import OptionMenu

root = Tk()

options = list('ABC')
var = StringVar(value='A')
om = OptionMenu(root, var, var.get(), *options)
om.config(width=25)
om.pack()

root.mainloop()

在我的电脑上,结果看起来是这样的:

下拉菜单被截断的示例

我尝试过调整padxipadx这两个参数,也试过用网格布局(grid layout)。但是没有一个方法能让我完整看到那个向下的箭头。

我很感激大家对这个问题的帮助和建议。

2 个回答

1

这里提到的修复内容是针对tk库中的一个脚本文件的。你可以修改自己电脑上的vistaTheme.tcl文件,让它和这个修复一致。如果你使用的是较旧版本的Tk,可能会遇到问题,但在更新的版本中,系统应该能正确请求所需的大小。

你可以通过以下方式找到文件路径:

from Tkinter import Tk
tk = Tk()
tk.eval("set tk_library")

然后编辑/ttk/vistaTheme.tcl文件。我这里用的是python3,似乎自带了Tk 8.6.1,所以这个问题已经解决了。

1

我在Windows 7上也遇到了同样的问题,但在XP上没有,两个系统都是用Python 2.7。我找到了一份错误报告,上面说这个问题应该在Tk 8.5.8中修复了。不过,更新Python中的Tcl/Tk似乎非常复杂

撰写回答