【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文件看起来应该差不多是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>110</x>
      <y>80</y>
      <width>201</width>
      <height>81</height>
     </rect>
    </property>
    <property name="text">
     <string>PushButton</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
     <height>20</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

现在,有两种方法来在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系列教程 由浅入深学好Qt for Python 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值