【发布时间】:2015-04-13 23:40:57
【问题描述】:
我正在使用 Tkinter ttk 单选按钮,但有一个特殊问题。最初创建的最后一个单选按钮看起来比其他单选按钮大。一旦鼠标放在它上面,它就会捕捉到正确的大小。
问题如下:
这是我正在使用的完整代码:
import tkinter
from tkinter import ttk
root = tkinter.Tk()
radioSelect = tkinter.IntVar()
radio1 = ttk.Radiobutton(root, text="A", variable=radioSelect, value=1)
radio2 = ttk.Radiobutton(root, text="B", variable=radioSelect, value=2)
radio1.grid()
radio2.grid()
root.mainloop()
如果我使用 grid 或 place,它会出现,并且它会出现在 复选框 以及 单选按钮 上.如果我使用 tkinter 单选按钮而不是 ttk 单选按钮,则不会出现此问题,但我想使用 ttk 单选按钮,因为它们看起来更好。
我正在运行 Windows 7 64 位 Python 版本
3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)]
我已经搜索过,但找不到有类似问题的人。
这是怎么回事?
更新:这仅在使用“vista”主题时发生,这是默认的(至少在我的机器上)。如果指定了另一个主题,问题就会消失。
【问题讨论】:
-
似乎与操作系统相关或依赖于 tk/python 实现。我刚刚检查了在 ubuntu 14.04 上使用 python 3.4 并没有看到这种行为。对我来说一切似乎都很好。您能否提供有关您的设置的更多详细信息以及更完整的代码。我们不能只是复制并粘贴您的 sn-p 来测试这种行为。
-
我写了一个更简单的例子来避免抛出数百行代码。它创建一个窗口,添加两个单选按钮并显示它,然后问题就出现了。我在示例中使用了网格,但它也发生在位置上。如果有帮助,我还添加了我的操作系统和 Python 版本。
-
是的。所以现在我可以确认它在 Linux 中不是问题。似乎依赖于 OS/python 实现。因此,我不知道如何为 Windows 解决它,因为我只使用 Linux。对不起。
-
我还附上了 gif,展示了它在 linux 中的工作原理here。
-
当我在高 DPI 设置下禁用显示缩放时,我发现了同样的问题,例如
from ctypes import windll; windll.shcore.SetProcessDpiAwareness(1)。但是,该功能的最低支持客户端是 Windows 8.1,如 MS 文档中所述。