我们通过Qt设计器新建了界面文件之后,我们通常会调用pyuic5来把这个界面文件转换为py文件,例如界面文件为main_window.ui,那么在python程序中要使用这个ui,我们需要通过以下命令来将它转换为py文件:
$ pyuic5 -o main_window_ui.py ui/main_window.ui
执行上面指令,会生成一个main_window_ui.py文件,这个文件中的代码可能如下所示:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(413, 299)
self.centralwidget = QtWidgets.QWidget(MainWindow)
# Snip...
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Sample Editor"))
self.menu_File.setTitle(_translate("MainWindow", "&File"))
…
然后我们就可以在py程序中使用这个界面了。使用方法有两种:
方法一:多重继承,示例代码
import sys
from PyQt5.QtWidgets import (
QApplication, QMainWindow
)
from main_window_ui import Ui_MainWindow
#多重继承
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec())
方法二:组合。示例代码
import sys
from PyQt5.QtWidgets import (
QApplication, QMainWindow
)
from main_window_ui import Ui_MainWindow
#组合
class Window(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec())