Связывание файла .ui с qtDesigner с python/pyqt?

Итак, если я войду в QtDesigner и создаю пользовательский интерфейс, он будет сохранен как .ui файл. Как я могу сделать это как файл python или использовать его в python?

Ответ 1

Другой способ использования .ui в вашем коде:

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

оба подхода хороши. Не забывайте, что если вы используете файлы ресурсов Qt (чрезвычайно полезные) для значков и т.д., Вы также должны скомпилировать его:

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

Обратите внимание, что когда uic компилирует интерфейс, он добавляет "import images_rc" в конец .py файла, поэтому вы должны скомпилировать ресурсы в файл с этим именем или переименовать его в сгенерированный код.

Ответ 2

Объединяя Макс ответ и сообщение в списке рассылки Shriramana Sharma, я создал небольшой рабочий пример для загрузки файла mywindow.ui содержащего QMainWindow (поэтому просто выберите создание главного окна в диалоге File-New Qt Designer).

Это код, который загружает его:

import sys
from PyQt4 import QtGui, uic

class MyWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        uic.loadUi('mywindow.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

Ответ 3

Вам нужно сгенерировать файл python из вашего файла ui с помощью инструмента pyuic (site-packages\pyqt4\bin)

pyuic form1.ui > form1.py

с pyqt4

pyuic4.bat form1.ui > form1.py

Затем вы можете импортировать форму1 в свой script.

Ответ 4

Я нашел эту статью очень полезной.

http://talk.maemo.org/archive/index.php/t-43663.html

Я кратко опишу действия для создания и изменения файла .ui в файл .py, взятый из этой статьи.

  • Запустите Qt Designer в меню "Пуск".
  • В окне "Новая форма" создайте "Главное окно"
  • От "Показать виджеты" в нижней части вашего "Меню виджетов" слева | добавьте "Виджет ярлыков". (Нажмите "Перетаскивание" ).
  • Дважды щелкните по добавленному ярлыку ярлыков, чтобы изменить его название на "Hello World"
  • в этот момент вы можете использовать горячую клавишу Control + R, чтобы увидеть, как она будет выглядеть.
  • Добавьте кнопки или текст или другие виджеты, перетащив их, если хотите.
  • Теперь сохраните форму. Файл- > Сохранить как- > "Hello World.ui" (Control + S также откроет "Сохранить как" ). Обратите внимание на каталог, в котором вы сохранили "Hello World".ui
    файл. (Я сохранил мой (C:) для удобства)

Файл создается и сохраняется, теперь мы будем генерировать код Python с помощью pyuic!

  • В меню "Пуск" откройте окно команд.
  • Теперь "cd" в каталог, где вы сохранили свой "Hello World.ui" . Для меня я просто должен был "cd \" и был в моей подсказке "C: > ", где был сохранен мой "Hello World.ui" .
  • Когда вы попадаете в каталог, где хранится ваш файл, введите следующее.
  • pyuic4 -x helloworld.ui -o helloworld.py
  • Поздравляем!! Теперь у вас есть приложение python Qt4 GUI!
  • Дважды щелкните файл helloworld.py, чтобы запустить его. (Я использую pyscripter и двойным кликом
    он открывается в pyscripter, затем я "запускаю" файл оттуда)

Надеюсь, это поможет кому-то.

Ответ 5

Вы также можете использовать uic в PyQt5 со следующим кодом.

from PyQt5 import uic, QtWidgets
import sys

class Ui(QtWidgets.QDialog):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('SomeUi.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())

Ответ 6

Вы можете конвертировать ваши .ui файлы в исполняемый файл python с помощью следующей команды.

pyuic4 -x form1.ui > form1.py

Теперь вы можете сразу выполнить файл python как

python3(whatever version) form1.py

Вы можете импортировать этот файл, и вы можете его использовать.

Ответ 7

По-моему, более чистый способ - сначала экспортировать в .py, как указано выше:

pyuic4 foo.ui > foo.py

И затем используйте его внутри своего кода (например, main.py), например:

from foo import Ui_MyWindow


class MyWindow(QtGui.QDialog):
    def __init__(self):
        super(MyWindow, self).__init__()

        self.ui = Ui_MyWindow()
        self.ui.setupUi(self)

        # go on setting up your handlers like:
        # self.ui.okButton.clicked.connect(function_name)
        # etc...

def main():
    app = QtGui.QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Этот способ дает возможность другим людям, которые не используют qt-designer для чтения кода, а также сохраняет код вашей функциональности вне foo.py, который может быть перезаписан дизайнером. Вы просто ссылаетесь на класс ui через MyWindow, как показано выше.

Ответ 8

вы можете скомпилировать ui файлы, подобные этому

pyuic4 -x helloworld.ui -o helloworld.py

Ответ 9

Чтобы скомпилировать файлы .ui в .py файлы, я сделал:

python pyuic.py form1.ui > form1.py

Att.

Ответ 10

в pyqt5 для преобразования из файла пользовательского интерфейса в файл .py

pyuic5.exe youruifile.ui -o outputpyfile.py -x

Ответ 11

Использование Anaconda3 (сентябрь 2018 г.) и дизайнера QT 5.9.5. В конструкторе QT сохраните ваш файл как пользовательский интерфейс. Откройте Anaconda. Найдите ваш файл: cd C:.... (скопируйте/вставьте путь доступа к вашему файлу). Затем напишите: pyuic5 -x helloworld.ui -o helloworld.py(helloworld = имя вашего файла). Войти. Запустите Spyder. Откройте ваш файл .py.