Я плохо знаком с Python и начинаю преподавать мне GUI, программирующий (надо надеяться), использующий PyQT4.7 и Python 2.6
Я просто загрузил целый пакет PyQT/QT4 (включая QTDesigner) с веб-сайта PyQT, однако это кажется QTDesigner, который выглядит удивительным для использования в качестве новичка (так как Вы видите все атрибуты/свойства/значения по умолчанию и т.д.) каждого виджета, и визуально отредактируйте свойства, является большим, но PyQT, кажется, не устанавливает QTDesigner для интеграции непосредственно с со сценариями PyQTs python генерации кода и PyQT:
т.е.: Удар "Кода Представления", пытается выполнить Разработчика-> сценарий C++, названный (uic) вместо pyuic.py сценария и т.д.
Существует ли способ добраться, QTDesigner для интеграции тесно с PyQT для генерации кода на лету как он делает с C++?
В противном случае это означает, что я должен кодировать весь спокойный GUI в своем IDE Python и поиске вся документация и шаблонный код для каждого виджета? (кажется очень неэффективным и неэлегантным по сравнению только с наличием интеграции QTDesigner+Python).
Каков обычный набор инструментальных средств//производственный поток использования Разработчика с PyQT? (Если никакая прямая интеграция не возможна - python+pyQT, пользователи просто пропускают использование QTDesigner все вместе и вручную пишут весь спокойный код GUI в Python?)
Любые дополнительные подсказки/предложения для новичка PyQT ценились бы.Спасибо!
PS я знаю набор Вас, вероятно, собирается сказать мне просто сосать его и кодировать весь спокойный UI вручную, но если я использую Разработчика при изучении, как спросили выше, позвольте делать это так, я могу изучить это более легко, Спасибо!
Я начал писать свое первое приложение PyQT (PyQT используется только для обработки графического интерфейса), и мне кажется, что хорошей цепочкой инструментов является: QtDesigner для создания файлов .ui и обработки ресурсов и некоторая IDE, которая может настроить QtDesigner для их редактирования. . Я использую Eclipse, потому что он легко настраивается. Вы можете скомпилировать ваши .qrc и .ui по запросу, сделав что-то вроде этого при запуске приложения, или при установке, или в любое другое время:
os.system("pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc")
uic.compileUiDir(appDir + '/ui', True)
, а затем используя сгенерированные классы следующим образом:
class MyMainWindow(QtGui.QMainWindow):
def __init__(self, owner):
QtGui.QMainWindow.__init__(self)
# 'Ui_MyMainWindow' is the class, that was generated by uic,
# naming convention is: 'Ui_' plus the name of root widget in designer
self.ui = Ui_MyMainWindow()
self.ui.setupUi(self)
или вы можете загрузить .ui непосредственно при входе контейнера:
QtGui.QMainWindow.__init__(self)
self.ui = None
uic.loadUi('MyMainWindowUI.ui', self.ui)
#now you have the instance of Ui_MyMainWindow in self.ui too, as above
обратите внимание, что я добавил суффикс пользовательского интерфейса к имени файла .ui, это было сделано, чтобы избежать пересечения имен, потому что имя файла .py , сгенерированный uic, это не имя класса, начинающееся с 'Ui_', а просто имя корневого виджета.
И еще одно примечание: в конце сгенерированного файла uic помещает строку 'import% .qrc name% _rc' (по умолчанию - import images_rc), поэтому вы должны помнить об этом при использовании pyrcc4.
Подход в целом достаточно гибкий, он берет на себя всю работу по написанию фиктивного пользовательского интерфейса; но вы все равно можете выполнить тонкую настройку в атрибуте MyMainWindow.ui, где находится экземпляр Ui_MyMainWindow; и это позволяет избежать ненужного наследования. Лично я использую методы _connectSlots и _initIntefrace в MyMainWindow, чтобы выполнить некоторую работу, которую дизайнер не может.
Тем не менее, я должен отметить, что писать код интерфейса самостоятельно - это хороший подход, потому что код, сгенерированный uic, УЖАСНЫЙ. Я предпочитаю загружать .ui на место с помощью loadUi () из-за этого :) И если у вас много настраиваемых элементов управления PyQT, то будет очень сложно перенести их в QtDesigner ..
Вы можете запустить pyuic
(или, точнее, pyuic4
) вручную, в консоли. Вы можете создать свой графический интерфейс с помощью конструктора на Python, как если бы вы это делали на C ++.
Между прочим: я написал весь графический интерфейс для своего приложения (10 КБ кода) вручную. Мне не очень нравятся дизайнеры GUI и работа с сгенерированным кодом, когда нужно что-то подправить.
QtDesigner использует uic.exe
для создания кода C++ "на лету". uic.exe
— это инструмент командной строки, он получает имена файлов в качестве входных параметров. Для интеграции с python вы можете написать программу python, которая использует pyuic.py
, сопоставить ее входные данные с входными данными uic.exe
(порядок, переключатели и т. д.), преобразовать ее в исполняемый файл (используя py2exe) и переименуйте исполняемый файл в uic.exe
. затем замените его на uic.exe в каталоге bin Qt (насколько я знаю, uic.exe не существует в PyQt). Вы просто должны быть осторожны с входными аргументами uic.exe
и вашим рукописным макросом (они должны совпадать).
Я думаю, что ваша программа должна знать путь python (чтобы использовать pyuic). если вы используете окна, вы можете получить путь из реестра.