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, value=1)
radio2 = ttk.Radiobutton(root, text="B", variable=radioSelect, value=2)

radio1.grid()
radio2.grid()

root.mainloop()

Это появляется, если я использую сетку или место, и появляется на флажках, а также переключателях. Проблема не возникает, если я использую переключатели tkinter, а не ttk, но я бы хотел использовать ttk, потому что они выглядят лучше.

У меня 64-битная версия Windows 7, версия Python.

3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)]

Я искал, но не смог найти никого с похожей проблемой.

Что тут происходит?

ОБНОВЛЕНИЕ: Это происходит только при использовании темы «vista», которая используется по умолчанию (по крайней мере, на моей машине). Если указана другая тема, проблема исчезает.


person gfrung4    schedule 13.02.2015    source источник
comment
Кажется, это связано с ОС или зависит от реализации tk/python. Я только что проверил использование Python 3.4 на Ubuntu 14.04 и не вижу такого поведения. Кажется, у меня все в порядке. Можете ли вы предоставить более подробную информацию о вашей настройке и более полный код. Мы не можем просто скопировать и вставить ваш фрагмент, чтобы проверить это поведение.   -  person Marcin    schedule 13.02.2015
comment
Я написал более простой пример, чтобы избежать написания сотен строк кода. Он создает окно, добавляет два переключателя и показывает его, и возникает проблема. В моем примере я использовал сетку, но это происходит и с местом. Я также добавил свою версию ОС и Python, если это поможет.   -  person gfrung4    schedule 13.02.2015
comment
Ага. так что теперь я могу подтвердить, что это не проблема в Linux. Кажется, зависит от реализации ОС/python. Таким образом, я не знаю, как это решить для Windows, так как я использую только Linux. Извиняюсь.   -  person Marcin    schedule 13.02.2015
comment
Я также прикрепляю gif, показывающий, как это работает в Linux здесь.   -  person Marcin    schedule 13.02.2015
comment
кстати: root.grid() абсолютно ничего не делает. Вам это не нужно.   -  person Bryan Oakley    schedule 13.02.2015
comment
@BryanOakley Спасибо! Я удалил эту строку. Изначально у меня были две радиокнопки на рамке, которая была на окне. Пришлось заштриховать рамку. Я понял, что это упростило пример, если я просто поместил переключатели прямо в окно, но забыл о линии сетки в своих редактированиях...   -  person gfrung4    schedule 13.02.2015
comment
Я наблюдаю ту же проблему, когда отключаю масштабирование экрана при высоких настройках DPI, например from ctypes import windll; windll.shcore.SetProcessDpiAwareness(1). Однако минимальным поддерживаемым клиентом для этой функции является Windows 8.1, как указано в документации MS.   -  person Max    schedule 09.01.2019


Ответы (1)


Как сказано в одном комментарии, это должна быть проблема, связанная с ОС, я проверил ваш код, и все нормально и работает нормально, к сожалению, после долгих поисков я обнаружил, что нет способа изменить размер кнопки.

person ghazigamer    schedule 24.08.2020