2017-02-10 3 views
0

Я создал графический интерфейс с геттом QtCreator -> QtDesigner. Файл называется mainwindow.ui. С помощью pyuic5 я создал mainwindow.pyВ Python, как использовать файл модуля GUI, созданный в QtDesigner

pyuic5 mainwindow.ui > mainwindow.py 

и вот как это выглядит:

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(400, 300) 
     self.centralWidget = QtWidgets.QWidget(MainWindow) 
     self.centralWidget.setObjectName("centralWidget") 
     self.frame = QtWidgets.QFrame(self.centralWidget) 
     self.frame.setGeometry(QtCore.QRect(30, 20, 341, 191)) 
     self.frame.setFrameShape(QtWidgets.QFrame.Panel) 
     self.frame.setFrameShadow(QtWidgets.QFrame.Sunken) 
     self.frame.setObjectName("frame") 
     MainWindow.setCentralWidget(self.centralWidget) 
     self.menuBar = QtWidgets.QMenuBar(MainWindow) 
     self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 23)) 
     self.menuBar.setObjectName("menuBar") 
     MainWindow.setMenuBar(self.menuBar) 
     self.mainToolBar = QtWidgets.QToolBar(MainWindow) 
     self.mainToolBar.setObjectName("mainToolBar") 
     MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) 
     self.statusBar = QtWidgets.QStatusBar(MainWindow) 
     self.statusBar.setObjectName("statusBar") 
     MainWindow.setStatusBar(self.statusBar) 

     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 

и хотел импортировать, что в моем основном сценарии main.py:

#!/usr/bin/env python3 

from PyQt5.QtCore import * 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 
from mainwindow import * 
import sys 


def main(): 
    app = QApplication(sys.argv) 
    instance = Ui_MainWindow() 
    #instance.show() 
    sys.exit(app.exec_()) 


if __name__ == "__main__": 
    main() 

.. но ничего не происходит, когда я запускаю его. Как мой main.py должен использовать этот модуль gui?

+1

См. Документацию PyQt: http://pyqt.sourceforge.net/Docs/PyQt5/designer.html –

ответ

0

Хорошо, я сам это понял. Чтобы использовать файл GUI в Python, созданный в QtCreator под названием mainwindow.py, мой main.py должен выглядеть примерно так:

#!/usr/bin/env python3 

from PyQt5.QtCore import * 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 
from mainwindow import * 
import sys 

class Main(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.show() 


def main(): 
    app = QApplication(sys.argv) 
    instance = Main() 
    #instance.show() 
    sys.exit(app.exec_()) 


if __name__ == "__main__": 
    main() 

Мой класс Main (QMainWindow) должен иметь родителя QMainWindow и не QWidgetQWidget, потому что не имеет setCentralWidget метод, который необходим в mainwindow.py.

Смежные вопросы