Использование QTDesigner с PyQT и Python 2.6

Я плохо знаком с 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 вручную, но если я использую Разработчика при изучении, как спросили выше, позвольте делать это так, я могу изучить это более легко, Спасибо!

20
задан gruszczy 22 March 2010 в 18:12
поделиться

3 ответа

Я начал писать свое первое приложение 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 ..

20
ответ дан 30 November 2019 в 01:02
поделиться

Вы можете запустить pyuic (или, точнее, pyuic4 ) вручную, в консоли. Вы можете создать свой графический интерфейс с помощью конструктора на Python, как если бы вы это делали на C ++.

Между прочим: я написал весь графический интерфейс для своего приложения (10 КБ кода) вручную. Мне не очень нравятся дизайнеры GUI и работа с сгенерированным кодом, когда нужно что-то подправить.

1
ответ дан 30 November 2019 в 01:02
поделиться

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). если вы используете окна, вы можете получить путь из реестра.

0
ответ дан 30 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: