Поле выбора WxPython невидимо только на Mac - PullRequest
0 голосов
/ 11 сентября 2018

Я занимаюсь разработкой кроссплатформенного приложения на Python с использованием wxPython.Приложение полностью разработано, и графический инструментарий установлен в камне, по крайней мере, в настоящее время.

В Windows все выглядит отлично.В Linux все выглядит довольно хорошо.На Mac у меня возникают проблемы с тем, что в панели инструментов скрыт комбинированный список / выбор, хотя в Windows он отлично отображается.

Вот снимок моего приложения в Linux, отмечая весь «CoeffConv».. "является частью прекрасно отображаемого комбинированного списка:

enter image description here

А вот снимок той же точной кодовой базы на Mac: missing_choice_box

Я пробовал с wx.ComboBox и wx.Choice с тем же эффектом.Я обязательно вызвал функцию Realize () после добавления элементов панели инструментов.Я убедился, что AddControl вызывается для добавления объекта на панель инструментов.Он определенно пытается отрендерить, потому что интервал - это именно то, что я и ожидал, учитывая содержимое поля выбора.

На самом деле, если я не вызываю AddControl, но я создаю поле выбора с панелью инструментов какродительский элемент, поле отображается, но все не организовано должным образом из-за отсутствующего вызова AddControl:

enter image description here

В качестве еще одной проверки я создал суперпростая панель инструментов с демонстрационным выбором, и она прекрасно работает:

enter image description here

Итак, вот краткое изложение того, что я знаю:

  1. В Windows поле выбора работает идеально, указывая на то, что код не обязательно ошибочен.
  2. В Linux поле выбора работает идеально, поддерживая идею, что код на самом деле в порядке.
  3. На Mac поле выбора присутствует, кажется, но как-то невидимо, подразумевая, что это проблема с Mac, или с дистрибутивом Python на Mac, или с элементом управления combobox в дистрибутиве wxPython на Mac.
  4. Вкл.Mac,Я могу получить возможность отображать (неправильно, но все же) без вызова AddControl, указывая, что комбинированный список может отображаться правильно, но что-то глупо в размещении при добавлении на панель инструментов
  5. Однако на Mac я могу получитьпанель инструментов / выбор для полной визуализации в фиктивном примере, указывающий, что это что-то в моей реализации ... но я не могу понять, что вызвало бы это, поскольку я пытаюсь сделать точно такие же вызовы к объектам wx, как вфиктивный пример.

Я не могу заставить фиктивный пример воспроизвести проблему, но я буду продолжать пытаться.Я рад сообщить о некоторых свойствах объекта, если они будут полезны при диагностике.Если у кого-то есть подсказка о том, что может привести к тому, что он не появится, я буду очень признателен!

1 Ответ

0 голосов
/ 12 сентября 2018

Несмотря на то, что я не смог найти рут, почему он не работает на Mac, я нашел проблему, которая могла бы помочь другим.

Сначала немного больше фона.В приложении у нас есть несколько панелей инструментов.По этой причине мы создаем панели инструментов с использованием простых объектов wx.ToolBar и добавляем их во фрейм приложения с помощью sizer.Это отличается от более стандартного метода использования self.CreateToolBar (), который позволяет только фрейму иметь одну панель инструментов.

Когда я делаю одно изменение в коде, чтобы использовать более естественный интерфейс CreateToolBar,выпадающий список сразу появляется.Когда я это делаю, вторая панель инструментов не работает, но, по крайней мере, начальная панель инструментов работает отлично.Я буду исследовать, как получить несколько панелей инструментов на Mac, но это шаг в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...