WxPython различия между Windows и Linux - PullRequest
1 голос
/ 27 мая 2009

Все руководства, которые я нашел на WxPython, используют примеры из Linux, но, похоже, в некоторых деталях есть различия.

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

Итак, вы знаете, какие есть важные отличия, или, может быть, хороший учебник, ориентированный на Windows?

РЕДАКТИРОВАНИЕ: Я только что вспомнил: кто-нибудь знает, почему при создании подкласса wx.App требуется метод OnInit (), а не более логичный __init__ ()?

Ответы [ 3 ]

2 голосов
/ 27 мая 2009

Я заметил странные особенности в небольшом графическом интерфейсе, который я написал некоторое время назад, но прошло много времени с тех пор, как я старался, чтобы специфика была довольно отдаленной памятью. У вас есть конкретные примеры, которые терпят неудачу? Может быть, мы можем улучшить их и исправить ошибки?

Вы пробовали официальные руководства по wxPython ? ... или вы хотели что-то более конкретное?

r.e. ваше редактирование - вы должны использовать OnInit(), потому что вы создаете подклассы wx.App (т.е. это требование для wxWidgets, а не для Python), а реализация wxPython везде, где это возможно, просто оболочка для wxWidgets .

[Редактировать] У Zetcode есть довольно длинный урок по wxPython . Я сам все это не просматривал, но это может помочь?

Документация wxWidgets::wxApp::OnInit() довольно ясна:

Это должно быть предоставлено приложением и обычно создает главное окно приложения, при необходимости вызывая wxApp :: SetTopWindow. Вы можете использовать OnExit для очистки всего, что инициализировано здесь, при условии, что функция возвращает true.

Если бы wxWidgets не предоставлял общий интерфейс, вам пришлось бы делать разные вещи в C ++ (используя конструктор) по сравнению с __init__(self,...) в Python. Использование независимой от языка инициализации позволяет портам wxWidgets для других языков выглядеть более одинаково, что должно быть хорошо, не так ли? : -)

0 голосов
/ 01 июня 2009

Я нахожу ряд небольших отличий, но не помню всех из них. Вот два:

1) Раскладка может немного отличаться, например, из-за чего вещи не полностью помещаются в окне в одной ОС, когда в другой. Я не исследовал причины этого, но это чаще всего случается, когда я использую позиции, а не размеры, чтобы расположить вещи.

2) Я должен явно вызвать Refresh в Windows. Например, если вы поместите одну панель поверх другой, вы не увидите ее на верхней панели в Windows, пока не вызовете команду «Обновить».

В общем, я пишу приложения для Linux и запускаю их в Windows, и все работает достаточно схожим образом, так что это разумный подход, но я редко, когда что-то работает прямо из шлюза после переключения ОС. *

0 голосов
/ 27 мая 2009

РЕДАКТИРОВАТЬ: Я только что вспомнил: Кто-нибудь знает, почему при создании подкласса wx.App требуется метод OnInit (), а не более логичный __init__()?

Я использую OnInit() для симметрии: есть также метод OnExit().

Редактировать: Я могу ошибаться, но я не думаю, что использование OnInit() необходимо.

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