这篇教程讲解如何使用Qt Creator来为你的PySide2项目创建图形界面。你需要使用Qt Creator来设计和修改你的用户界面(UI文件)。
如果你不知道怎么使用Qt Creator,可以看Using Qt Designer这篇文章。
在Qt Creator中,新建一个Qt Design Form,选择“Main Window”作为模板,保存为mainwindow.ui。在界面上放一个centralwidget布局,然后在中间添加一个QPushButton组件。
你的mainwindow.ui文件看起来应该差不多是这样的:
MainWindow
0
0
400
300
MainWindow
110
80
201
81
PushButton
0
0
400
20
TopToolBarArea
false
现在,有两种方法来在Python中使用你的UI文件,供你选择。
使用pyside2-uic工具,可以将UI文件转换为Python类文件。在系统命令行中运行下面命令即可:
pyside2-uic mainwindow.ui > ui_mainwindow.py
生成的ui_mainwindow.py文件可以直接被引用:
from ui_mainwindow import Ui_MainWindow
我们需要创建一个Ui_MainWindow的子类来使用。可以看看完整的代码来理解这个用法:
import sys
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtCore import QFile
from ui_mainwindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在if语句里的内容我们都认识。在我们定义的子类里只加了两行代码,用来载入我们用UI文件生成的Python类文件:
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
每次修改UI文件后,你都需要重新运行pyside2-uic将其转换为Python类文件。
我们可以用QtUiTools模块直接载入UI文件:
from PySide2.QtUiTools import QUiLoader
QUiLoader让我们可以实时直接调用UI文件:
ui_file = QFile("mainwindow.ui")
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
window.show()
完整代码如下:
# File: main.py
import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QFile
if __name__ == "__main__":
app = QApplication(sys.argv)
ui_file = QFile("mainwindow.ui")
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
ui_file.close()
window.show()
sys.exit(app.exec_())
使用以下命令行即可执行这个程序:
python main.py