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

找到Qt Designer

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

![Pyside6-designer路径]

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

>> PySide6-designer

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

于是,我们可以得到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())

可以得到如下界面:

在这里插入图片描述

按钮点击功能开发

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

@Slot()
def on_objectName_signal_Name(self, signalParameter):

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())

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值