Как импортировать главное окно (файл .ui) с помощью PySide

Я делаю проект Python и разрабатываю его интерфейс с помощью PySide. Проблема в том, как я могу импортировать главное окно (файл .ui) из Qt Designer с помощью PySide. Мой класс унаследован от QtGui.QMainWindow.

Спасибо за ваш ответ. ^^


person Pandarian Ld    schedule 16.03.2014    source источник


Ответы (2)


Допустим, объект верхнего уровня в Qt Designer называется MainWindow.

Когда вы используете pyside-uic для создания модуля GUI, он создаст класс с именем Ui_MainWindow. Именно этот класс вам нужно импортировать в ваше основное приложение. Импортированный класс имеет метод setupUi, который используется для внедрения GUI в экземпляр класса верхнего уровня из Qt Designer. Таким образом, основной код для этого должен выглядеть примерно так:

from PySide import QtCore, QtGui
from mainwindow import Ui_MainWindow

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.ui = Ui_MainWindow.setupUi(self)

После этого вы можете получить доступ к виджетам из Qt Designer следующим образом:

       # connect a button to its handler
       self.ui.pushButton.clicked.connect(self.handleButtonClicked)

Чтобы запустить приложение, вы можете сделать:

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
person ekhumoro    schedule 16.03.2014
comment
Я уже использую этот метод, и он работает. Спасибо за ответ. ;) - person Pandarian Ld; 18.03.2014

Вам нужно будет использовать класс QUILoader.

А именно, вы будете использовать метод «загрузки», который задокументирован здесь.

Вы можете передать подкласс QIODevice в качестве первого аргумента, например. экземпляр QFile, в котором вы открываете файл .ui.

person lpapp    schedule 16.03.2014
comment
Я не уверен, что не так с моим кодом. Вместо этого я использую pyside-uic для создания файла .py из файла .ui. Спасибо за ваш ответ. Я думаю, что это может быть полезно для других. ;) @Ласло Папп - person Pandarian Ld; 16.03.2014