Диалоговое окно Python 3 tkinter checkbutton с разными цветами фона

#python-3.x #tkinter

#python-3.x #tkinter

Вопрос:

Приложение представляет собой приложение на основе холста. Для определенного окна в графическом интерфейсе, когда пользователь нажимает на него, я открываю диалоговое окно checkbutton. Диалоговое окно содержит GIF-изображение с цветовой кодировкой вверху. Ниже приведены 48 контрольных кнопок, расположенных группами по 4. Каждая группа из четырех соответствует цвету на изображении GIF. Итак, я установил цвет фона каждой кнопки проверки на соответствующий цвет на изображении GIF. Это помогает пользователю выбрать соответствующую кнопку. Цвета — это просто строки RGB, такие как «# 00cc00» и т.д.
Моя проблема в том, что при запуске в Linux цвета фона контрольных кнопок не отображаются, если я не наведу курсор мыши на контрольные кнопки. В противном случае у них просто серый фон. Когда я запускаю Windows из MobaXterm, это работает как шарм. Цвета фона появляются немедленно. Однако целевой платформой является Linux. Я пробовал следующее: используя ttk и не используя ttk. Принудительное обновление диалогового окна, вызывающее событие ввода мыши «ничего не делать». Однако ничего из этого не сработало. Версия python 3 — anaconda 3.7.6 с tkinter 8.6.10.

Ответ №1:

Я нашел решение. Для каждой контрольной кнопки я привязываю события Enter и Leave к обратному вызову, который ничего не делает, просто возвращает. Затем, после создания диалогового окна, я сначала вызываю event_generate, чтобы ввести, а затем оставить checkbutton. Похоже, что это решает проблему, и диалоговое окно также работает корректно. Хотя, если у кого-то есть более элегантное решение, я бы тоже хотел его увидеть.