赞
踩
使用pip
命令安装PySide6
后,可以在安装目录的Scripts
文件夹下找到PySide6-designer.exe文件,双击该文件,则可以打开设计窗口。比如说我的电脑,PySide6在D分区下miniconda
的base
环境里安装,那么路径就是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())
运行该程序,则可实现界面转换为代码功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。