【PySide2教程】1-5 使用UI文件

这篇教程讲解如何使用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文件,供你选择。

生成Python类文件

使用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类文件。

直接载入UI文件

我们可以用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

你可能感兴趣的:(PySide2)