Qt Designer для PyQt на OSX 10.6 - PullRequest
       9

Qt Designer для PyQt на OSX 10.6

7 голосов
/ 18 февраля 2011

Мне очень понравился Qt Designer для Windows за создание графических интерфейсов для приложений Python (с использованием PyQt4), и я попытался установить его на свой Mac (под OSX 10.6.6).

На данный момент я успешно установил SIP, Qt4 и PyQt4.

Двоичные установщики PyQt (для Windows) включают версию Qt Designer, которая работает с PyQt. На OSX нет бинарного установщика, просто источник. Так что нет Qt Designer.

Сайт Qt предлагает скачать Qt Creator, но, насколько я могу судить, он требует написания кода на C / C ++.

Есть ли способ заставить Qt Creator работать с PyQt? Или есть другой дизайнер GUI для PyQt, который работает на Mac?

Спасибо! -Wesley

1 Ответ

11 голосов
/ 18 февраля 2011

Если вы установили Qt4, значит, у вас есть Qt Designer. Если вы использовали установщик с qt.nokia.com, он должен находиться в /Developer/Applications/Qt.

Сам Qt Designer прекрасно работает с PyQt. Qt designer просто выкладывает XML, описывающий структуру пользовательского интерфейса. Если бы вы использовали стандартный Qt с C ++, вам пришлось бы запускать инструмент uic для генерации C ++ из файлов .ui. Аналогично, в PyQt4 вы должны запустить pyuic4 для сгенерированного файла .ui, чтобы создать из него исходный код Python.

Если вы ищете полное решение IDE, которое автоматически обрабатывает все это с помощью PyQt, я не знаю о существовании такого решения. У меня просто есть скрипт build_helper.py, который обрабатывает все мои файлы .ui и помещает их в соответствующее место в пакете python, который я разрабатываю. Я запускаю вспомогательный скрипт сборки перед запуском реальной основной программы, чтобы убедиться, что сгенерированный код обновлен.

Все мои файлы .ui помещаются в подпапку ui в корне проекта. Затем сценарий создает исходный код Python и помещает его в «myapp / ui / generate».

Например:

import os.path
from PyQt4 import uic

generated_ui_output = 'myapp/ui/generated'

def process_ui_files():
    ui_files = (glob.glob('ui/*.ui'),
                glob.glob('ui/Dialogs/*.ui'),
                glob.glob('ui/Widgets/*.ui')))
    for f in ui_files:
        out_filename = (
            os.path.join(
                generated_ui_output,
                os.path.splitext(
                    os.path.basename(f))[0].replace(' ', '')+'.py')
        )
        out_file = open(out_filename, 'w')
        uic.compileUi(f, out_file)
        out_file.close()

if __name__ == '__main__':
    process_ui_files()

У меня также есть несколько других функций для запуска pyrcc4 для компиляции ресурсов и pylupdate4 и lrelease для генерации переводов.

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