PySimpleGUIDesigner 项目教程
1. 项目目录结构及介绍
PySimpleGUIDesigner 项目的目录结构如下:
PySimpleGUIDesigner/
├── psg_ui_maker.py
├── transpiler2.py
├── tmp_untitled.ui
├── result_psg.layout
└── README.md
目录结构介绍
psg_ui_maker.py
: 这是项目的主文件,负责将 Qt Designer 生成的 XML 文件转换为 PySimpleGUI 代码。transpiler2.py
: 这是转换器的核心文件,包含了将 Qt 元素转换为 PySimpleGUI 元素的逻辑。tmp_untitled.ui
: 这是一个示例的 Qt Designer 生成的 XML 文件,用于测试和演示。result_psg.layout
: 这是转换后的 PySimpleGUI 代码的输出文件。README.md
: 项目的说明文件,包含了项目的概述、安装和使用说明。
2. 项目启动文件介绍
项目的启动文件是 psg_ui_maker.py
。这个文件的主要功能是将 Qt Designer 生成的 XML 文件转换为 PySimpleGUI 代码。
psg_ui_maker.py
文件介绍
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import *
from transpiler2 import *
import sys
import os
import PySimpleGUI as sg
class MyWin(QtWidgets.QMainWindow):
def __init__(self, object_name):
super().__init__(None)
# 获取文件路径
cd = os.path.dirname(os.path.abspath(__file__))
tmp_untitled = os.path.join(cd, 'tmp_untitled.ui')
result_psg_ui = os.path.join(cd, 'result_psg.layout')
try:
# 读取 XML-UI 文件并加载到 Qt 对象中
xml_ui_file = QFile(tmp_untitled)
xml_ui_file.open(QFile.ReadOnly)
ui = QUiLoader().load(xml_ui_file)
# 转换为 PySimpleGUI 代码
no_bad_widgets = sys.argv[2] == '1'
psg_ui = optimize_psg_code(to_psg_element(getattr(ui, object_name), pass_bad_widgets=no_bad_widgets))
# 输出 PySimpleGUI 代码到文件
with open(result_psg_ui, 'w', encoding='utf-8') as ff:
ff.write(psg_ui)
except Exception as e:
message = 'Error: \n' + str(e)
if '''PySide2.QtWidgets.QMainWindow' object has no attribute''' in str(e):
message = 'Error: \nElement with "object name"="' + object_name + '" not found'
# 输出错误信息到文件
with open(result_psg_ui, 'w', encoding='utf-8') as ff:
ff.write(message)
return message
if __name__ == "__main__":
qapp = QtWidgets.QApplication(sys.argv)
myqapp = MyWin(sys.argv[1])
myqapp.close()
启动文件功能
- 读取
tmp_untitled.ui
文件并加载到 Qt 对象中。 - 将 Qt 对象转换为 PySimpleGUI 代码。
- 将生成的 PySimpleGUI 代码输出到
result_psg.layout
文件中。
3. 项目的配置文件介绍
PySimpleGUIDesigner 项目没有明确的配置文件,但可以通过命令行参数进行配置。
命令行参数介绍
sys.argv[1]
: 指定要转换的 Qt 对象的名称。sys.argv[2]
: 是否忽略未实现的 Qt 控件(1
表示忽略,0
表示不忽略)。
示例
python psg_ui_maker.py "somegroupBox" "1"
这个命令将转换名为 somegroupBox
的 Qt 对象,并忽略未实现的控件。
通过以上内容,您可以了解 PySimpleGUIDesigner 项目的目录结构、启动文件和配置方式。希望这篇教程对您有所帮助!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考