Python 安装 Pyside6 库并读取静态 UI 类文件

本文记录了 Python 安装 Pyside6 库,以及载入/读取 .py 类文件的相关代码。

前言

以下为 PyPI 网站对 Pyside6 的介绍。

PySide6 is the official Python module from the Qt for Python project, which provides access to the complete Qt 6.0+ framework.

Pyside6 提供了两种读取 UI 文件的方法,本文仅讲解读取生成 Python 类后的 UI 文件的方法。

前期准备

此部分为 Pyside6 库读取生成 Python 类后的 .py 文件前所需要做的准备。

安装 Pyside6

  1. 执行以下命令安装 Pyside6
    pip install pyside6
    

准备 .ui 文件

  1. 新建一个 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>
    

一般来说 .ui 文件是由 Qt Designer 生成的,这里为了方便直接创建文件作为例子。

文件读取

此部分正式开始讲解 Pyside6 读取生成 Python 类后的 .py 文件的方法。

普通示例

  1. 进入 mainwindow.ui 文件所在目录,终端执行以下命令将 .ui 文件转为 .py 文件
    pyside6-uic mainwindow.ui -o ui_mainwindow.py
    
  2. 在代码中从 ui_mainwindow.py 文件导入由 mainwindow.ui 文件生成的 Python 类
    from ui_mainwindow import Ui_MainWindow
    
  3. 在代码中导入其他所需要的依赖
    import sys
    from PySide6.QtWidgets import QMainWindow
    from PySide6.QtCore import QFile
    
  4. 编写一个 MainWindow 类,继承于 QMainWindow
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
    
  5. 最后运行代码
    if __name__ == "__main__":
        from PySide6.QtWidgets import QApplication
    
        app = QApplication(sys.argv)
    
        window = MainWindow()
        window.show()
    
        sys.exit(app.exec())
    

完整示例

  1. 将以上的代码完整的组合一下,得到以下代码
    import sys
    from PySide6.QtWidgets import QApplication, QMainWindow
    from PySide6.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())
    

实际上用来载入 UI 的 Python 类核心代码是以下两行

self.ui = Ui_MainWindow()
self.ui.setupUi(self)

总结

此方法载入 UI 文件需要每次更新 UI 文件内容后都重新生成对应的 Python 类文件,否则程序运行显示的界面和 .ui 文件会不一致。

此外,使用该方法生成的 Python 类在 Pycharm 中会有很多波浪号。

如果想要打包程序,可以使用此方法。

参考链接

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇