2012-01-16 2 views
3

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

На StackOverflow есть хотя бы один related question, но там не найдены ссылки на литературу.

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

ответ

3

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

Есть три основных способа получить PyQt4 UI в ваш код:

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

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

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

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

Вот старый стиль способ подключения сигнала Кнопка щелчка на методе обработчика (так называемый слот):

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

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

self.button.clicked(self.handleButtonClick) 

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

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

+0

Благодарим вас за ответ и ссылки. Новый стиль выглядит очень просто. И я должен, наверное, еще раз спросить моего друга, что он имеет в виду, говоря: объединение двух подходов, LoadUI и подключения по имени, имеет большой смысл. – Katya