Поддержка нового стиля сигналов и слотов, PyQt - PullRequest
3 голосов
/ 16 января 2012

Я пишу приложение с графическим интерфейсом на PyQt4 (Python3).Один мой друг отметил, что использование pyuic4 - плохая практика, и направил меня к модулю uic и функциям «Соединение слотов по имени».У него не было времени, чтобы объяснить больше, и ссылки, которые у меня есть, довольно короткие, я не мог понять идею из них ( модуль uic , LoadingUIFilesAtRuntime , соединительные слотыпо имени ).

В StackOverflow есть по крайней мере один связанный вопрос , но ссылки на литературу там не работают.

Я мог бы следовать стандартным учебникам исделал простой графический интерфейс с использованием Pyuic, но теперь немного запутался ... Любые хорошие примеры и / или ссылки приветствуются.

1 Ответ

3 голосов
/ 17 января 2012

Во-первых, использование pyuic4 определенно не является «плохой практикой».

Существует три основных способа вставить пользовательский интерфейс PyQt4 в ваш код:

  • Пиши все вручную
  • Используйте pyuic4 для автоматической генерации модуля Python, который можно импортировать
  • Используйте пакет uic для загрузки ui файлов непосредственно во время выполнения

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

Хороший источник учебников по PyQt4 можно найти в этом разделе PyQt4 Wiki . Тем не менее, я, вероятно, должен отметить, что, хотя они все еще актуальны, многие из них довольно старые и поэтому все еще используют сигналы и слоты старого стиля.

Однако разницу между старым и новым стилями не так сложно понять, поэтому, возможно, простой пример - это все, что нужно.

Вот старый способ подключения сигнала нажатия кнопки к методу обработчика (он же слот):

self.connect(self.button, QtCore.SIGNAL('clicked()'), self.handleButtonClick)

и вот новый стиль:

self.button.clicked(self.handleButtonClick)

Как видите, новый стиль гораздо проще и более питоничен. С другой стороны, старый стиль очень похож на то, как сигналы связаны с использованием C ++ (и по этой причине все еще может быть полезен в определенных обстоятельствах).

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

...