当前位置:   article > 正文

PySide6 GUI 学习笔记——用设计器设计界面_pyside6 设计器

pyside6 设计器

找到Qt Designer

使用pip命令安装PySide6后,可以在安装目录的Scripts文件夹下找到PySide6-designer.exe文件,双击该文件,则可以打开设计窗口。比如说我的电脑,PySide6在D分区下minicondabase环境里安装,那么路径就是D:\miniconda3\Scripts

![Pyside6-designer路径]

当然,我们也可以采用直接输入命令的方法打开设计器。

>> PySide6-designer
  • 1

PySide6设计器主界面如下:

在这里插入图片描述

设计界面

以制作一个简单的Widget为例,我们在templates\forms中选择Widget,创建一个Widget窗体应用。

在这里插入图片描述

可以从左侧拖动控件,绘制我们想要的窗口,也可以通过右侧属性面板,设置相关属性。

举个例子,假如我们要做一个简单的UI转代码界面工具,那么,我们可以拖拉拽和设置操作,做一个以下这样的窗口。

在这里插入图片描述

该文件保存为pyside-ui-to-code.ui,运行如下命令,则可将该文件转换为对应的Python代码(我们也可以定义为批处理文件、Python代码,甚至GUI程序)。

pyside6-uic pyside-ui-to-code.ui -o pyside_ui_to_code.py
  • 1

于是,我们可以得到pyside_ui_to_code.py的代码,之前的设计并定义到名为Ui_Form的类当中。

在这里插入图片描述

运行并显示界面

运行以下代码:

import pyside_ui_to_code # 导入pyside_ui_to_code文件
from PySide6.QtWidgets import QApplication, QWidget
import sys

class Pyside_ui_code_Widget(QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)    # 父类对象初始化
        self.ui = pyside_ui_to_code.Ui_Form()   # 实例化pyside_ui_to_code中的Ui_Form类
        self.ui.setupUi(self)   # 调用Ui_Form中的setupUi方法,并将定义的这个Widget作为实参传递给形参Form

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Pyside_ui_code_Widget()
    window.show()
    sys.exit(app.exec())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

可以得到如下界面:

在这里插入图片描述

按钮点击功能开发

应用Qt信号与槽机制,将clicked信号与特定的槽slot连接,完成点击功能开发。
我们可以在ui转过来的py文件中看到QMetaObject.connectSlotsByName(Form)语句,它可在窗口上查找所有从QObject类继承的控件,根据名称objectName匹配控件的信号与槽函数。槽方法格式如下:

@Slot()
def on_objectName_signal_Name(self, signalParameter):
  • 1
  • 2

UI转换后,我们做了如下开发:

import pyside_ui_to_code # 导入pyside_ui_to_code文件
from PySide6.QtWidgets import QApplication, QWidget, QFileDialog
import sys
import os
from PySide6.QtCore import Slot, Qt

class Pyside_ui_code_Widget(QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)    # 父类对象初始化
        self.ui = pyside_ui_to_code.Ui_Form()   # 实例化pyside_ui_to_code中的Ui_Form类
        self.ui.setupUi(self)   # 调用Ui_Form中的setupUi方法,并将定义的这个Widget作为实参传递给形参Form

    @Slot()
    def on_pushButtonUISelect_clicked(self):
        # 设置待转换的UI文件
        uiPath, _ = QFileDialog.getOpenFileName(
            self,  # 父窗口对象
            "选择你转换的UI文件",  # 标题
            os.curdir,  # 起始目录
            "UI文件 (*.ui)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.ui.textEditUI.setText(uiPath) 

    @Slot()
    def on_pushButtonCodeSelect_clicked(self):
        # 设置输出的代码文件
        codePath, _ = QFileDialog.getSaveFileName(
            self,  # 父窗口对象
            "保存文件",  # 标题
            os.curdir,  # 起始目录
            "Python文件 (*.py)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.ui.textEditCode.setText(codePath)

    @Slot()
    def on_pushButtonToolSelect_clicked(self):
        # 设置转换工具路径
        toolPath, _ = QFileDialog.getOpenFileName(
            self,   # 父窗口对象
            "选择你的转换工具", # 标题
            os.curdir, # 起始目录
            "可执行文件 (*.exe)"
        )
        self.ui.textEditTool.setText(toolPath)

    @Slot()
    def on_pushButtonRun_clicked(self):
        exec = self.ui.textEditTool.toPlainText()
        ui = self.ui.textEditUI.toPlainText()
        py = self.ui.textEditCode.toPlainText()
        cmd = '"{exec}" "{ui}" -o "{py}"'.format(exec = exec, ui = ui, py = py)
        # os.system(cmd) # “文件名、目录名或卷标语法不正确。” 考虑是“/”导致
        os.popen(cmd)   # 用管道方式执行命令,避免os.system的“文件名、目录名或卷标语法不正确。”错误

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Pyside_ui_code_Widget()
    window.setWindowFlags(window.windowFlags() & ~Qt.WindowMaximizeButtonHint 
                            | Qt.WindowCloseButtonHint)   # 禁用最大化按钮
    window.show()
    sys.exit(app.exec())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

运行该程序,则可实现界面转换为代码功能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/522219
推荐阅读
相关标签
  

闽ICP备14008679号