Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter ttk one单选按钮显示的大小错误_Python_Tkinter_Ttk - Fatal编程技术网

Python tkinter ttk one单选按钮显示的大小错误

Python tkinter ttk one单选按钮显示的大小错误,python,tkinter,ttk,Python,Tkinter,Ttk,我使用Tkinter ttk单选按钮,有一个特殊的问题。最初创建的最后一个单选按钮看起来比其他按钮大。将鼠标置于其上后,它将捕捉到正确的大小 问题是这样的: 这是我正在使用的代码,整体而言: import tkinter from tkinter import ttk root = tkinter.Tk() radioSelect = tkinter.IntVar() radio1 = ttk.Radiobutton(root, text="A", variable=radioSelect

我使用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()
如果我使用网格放置,它会出现在复选框以及单选按钮上。如果我使用tkinter单选按钮,而不是ttk单选按钮,问题不会出现,但是我想使用ttk单选按钮,因为它们看起来更好

我运行的是64位的Windows7,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上使用Python3.4,没有看到这种行为。对我来说一切似乎都很好。能否提供有关设置的更多详细信息和更完整的代码。我们不能只是复制和粘贴你的代码片段来测试这种行为。我写了一个简单的例子来避免抛出数百行代码。它创建了一个窗口,添加了两个单选按钮,并显示了它,问题就出现了。在我的示例中,我使用了网格,但它也适用于place。如果有帮助的话,我还添加了我的OS和Python版本。所以现在我可以确认这在Linux中不是问题。似乎依赖于OS/python实现。因此,我不知道如何为windows解决这个问题,因为我只使用Linux。抱歉。我还附加了显示它在linux中如何工作的gif。当我在高DPI设置上禁用显示缩放时,我发现了相同的问题,如ctypes import windl中的
;windell.shcore.setProcessdPiaware(1)
。但是,如MS文档中所述,该功能支持的最低客户端是Windows 8.1。