wxpython работает не адекватно

Рейтинг: 0Ответов: 1Опубликовано: 23.03.2023

Пытаюсь изучать wxPython. Читаю учебник и запускаю примеры из учебника. Но в результате получаю нечто похожее, но не совсем то же самое.

Например, изучаю тему "Меню". В учебнике есть пример и есть скриншот его работы:

Так должно быть

Однако, когда запускаю пример из этого учебника, то вижу вот что:

введите сюда описание изображения

Разница в том, что я не вижу иконок и не вижу символа подчёркивания. Я не привожу тут исходный текст, так как предполагаю, что дело не в тексте, а в окружении. Я запускал скрипт под Linux Fedora-37 и Python-3.11. Библиотека wxPython4.

Ответы

▲ 2

wxWidgets насколько это возможно, использует элементы управления предоставляемые API операционной системы, а не рисует их сам. (Это коренное отличие от Qt.) Поэтому, поведение и вид окон существенно отличаются на разных операционных системах, а также меняются с обновлением OS, и изменением графической схемы.

Картинки окон с zetcode.com сделаны под Ubuntu (довольно старой).

Клавиатурные подсказки (те самые подчеркнутые символы), вслед за windows, на всех десктопах стали показываться только если вы вызвали мемю клавиатурными операциями. Т.е. если вы кликнули по меню мышью - то подчеркнутых символов нет, а если нажали [alt] или кнопку контекстного меню, то они появятся.

Иконки - вы не устанавливали картинки вручную, поэтому показываются иконки установленные в текущей графической схеме вашей OS, в соответствии с ID пункта меню (wx.ID_EXIT, wx.ID_OPEN...). Просто рисовать иконки в меню стало "не модно". Однако, вы можете нарисовать иконку принудительно, используя qmi.SetBitmap(wx.Bitmap('texit.png')).