qtdesigner转python_将Qt Designer的ui文件转换为PySide2使用的.py文件

本文介绍了如何将Qt Designer创建的.ui文件转换为PySide2可使用的.py文件。首先,确保将pyside2-uic添加到环境变量,接着使用该命令将.ui文件转换,最后展示如何在Python中加载并运行转换后的.py文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20201206修订:在Pyside2的5.15.2版本中,从ui生成py文件过程,命令从“uic”变为“pyside2-uic”

Qt Designer 设计的ui文件,就是一个xml文件,通过pyside-uic可以转换成标准的.py文件 。通过QtDesigner创建的ui如图:

9bbabfea1fc99149a4b330b8745c1951.png

我们切入正题:

1:首先要保证将pyside2-uic.exe加到环境变量Path中。根据我的Python,PySide2安装路径。设置具体如下图:

bd5b24bca214a3342486cf2bdb1caa87.png                      

96a0e5f95aa50b4cfdf9d88ee725f6cb.png

2:使用PySide2中的QtDesigner工具创建具体的ui文件。QtDesigner路径如下:

f20707c2cc77041648382182dff3dcf3.png

3:将创建的ui文件使用命令生成对应的.py文件。先从系统的cmd进入到ui文件的位置,然后输入命令:

pyside2-uic ****.ui -o ****.py

进行文件转换。注:PySide2 5.15.2版本中“pyside2-uic”变为“uic”,但是cmd中的命令uic无效,只能用“pyside2-uic”命令

1c55f652b1a5c9822fc386d665fa8b46.png

运行正常。生成的py文件代码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui',

# licensing of 'untitled.ui' applies.

#

# Created: Mon May 11 20:42:28 2020

# by: pyside2-uic running on PySide2 5.12.6

#

# WARNING! All changes made in this file will be lost!

from PySide2 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(800, 600)

self.centralwidget = QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

self.widget = QtWidgets.QWidget(self.centralwidget)

self.widget.setGeometry(QtCore.QRect(0, 0, 801, 571))

self.widget.setObjectName("widget")

self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)

self.verticalLayout.setContentsMargins(0, 0, 0, 0)

self.verticalLayout.setObjectName("verticalLayout")

self.horizontalLayout_2 = QtWidgets.QHBoxLayout()

self.horizontalLayout_2.setObjectName("horizontalLayout_2")

self.horizontalLayout = QtWidgets.QHBoxLayout()

self.horizontalLayout.setObjectName("horizontalLayout")

self.pushButton = QtWidgets.QPushButton(self.widget)

self.pushButton.setObjectName("pushButton")

self.horizontalLayout.addWidget(self.pushButton)

self.pushButton_2 = QtWidgets.QPushButton(self.widget)

self.pushButton_2.setObjectName("pushButton_2")

self.horizontalLayout.addWidget(self.pushButton_2)

self.horizontalLayout_2.addLayout(self.horizontalLayout)

self.label = QtWidgets.QLabel(self.widget)

self.label.setObjectName("label")

self.horizontalLayout_2.addWidget(self.label)

self.verticalLayout.addLayout(self.horizontalLayout_2)

self.plainTextEdit = QtWidgets.QPlainTextEdit(self.widget)

self.plainTextEdit.setObjectName("plainTextEdit")

self.verticalLayout.addWidget(self.plainTextEdit)

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(MainWindow)

self.statusbar.setObjectName("statusbar")

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "MainWindow", None, -1))

self.pushButton.setText(QtWidgets.QApplication.translate("MainWindow", "PushButton", None, -1))

self.pushButton_2.setText(QtWidgets.QApplication.translate("MainWindow", "PushButton", None, -1))

self.label.setText(QtWidgets.QApplication.translate("MainWindow", "TextLabel", None, -1))

4:然后将生成的.py文件放到具体路径下,通过py进行加载,具体示例代码如下:

import sys

from PySide2.QtWidgets import QApplication

from PySide2.QtWidgets import QMainWindow

from ch06.Untitled import Ui_MainWindow

class LoginForm(QMainWindow):

def __init__(self, parent=None):

QMainWindow.__init__(self, parent)

self.ui = Ui_MainWindow()

self.ui.setupUi(self)

if __name__ == '__main__':

app = QApplication(sys.argv)

form = LoginForm()

form.show()

sys.exit(app.exec_())

运行,结果如下图:

530a293cc084014abb7fc47d8f5461f4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值