Pyside6实现自定义widget嵌套(自定义widget为独立ui文件)

这篇具有很好参考价值的文章主要介绍了Pyside6实现自定义widget嵌套(自定义widget为独立ui文件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际项目开发中,可能存在需要将自定义的widget嵌入到某一窗口的情况,或者为维护简洁方便,将一个大的UI文件拆分为多个独立的UI文件进行管理。这时就存在不同窗口的ui文件进行嵌套。

以widget控件为例,对实现过程进行记录,类间关系如下:

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

主窗口为自己编写的MainWindow类,其使用 Qt Designer设计的MainWindow_ui.py文件,实现主窗口ui界面控件。在Ui_MainWindow类中嵌入自己编写的PyechartWidget类作为自定义控件,控件的ui使用Qt Designer设计的pyechartWidget_ui.py文件实现。

首先在Qt Designer中建立一个主窗口,命名为MainWindow,保存为MainWindow.ui文件。

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

 右键选择centeralwidget对象,点击“提升为。。。”命令

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

 在弹出的窗口中,基类名称选择QWidget(即需要嵌入的控件类型),提升的类名称填写PyechartWidget.py文件中编译生成的类名,头文件填写pyechartWidget.py文件的文件名,注意要省略.py,只填写文件名即可,然后点击“添加”和“提升”。将MainWindow编译为MainWindow_ui.py文件。

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

再新建一个ui文件,文件类别选择widget,命名为pyechart_Widget。

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

 在控件中添加一个添加一个QWebEngineView控件,和一个label,然后保存编译为pyechartWidget_ui.py文件。

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt

  使用vscode编写主函数,需要import主窗口的Ui_MainWindow类代码如下:

import sys
from PySide6.QtWidgets import QApplication,QMainWindow
from MainWindow_ui import Ui_MainWindow

class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()     #创建MainWindow对象
        self.ui.setupUi(self)         #调用MainWindow的setupUi函数,创建ui控件

if __name__ == "__main__":
    app = QApplication(sys.argv)

    mainWindow = MainWindow()       #创建主窗口
    mainWindow.show()               #显示主窗口

    sys.exit(app.exec())

 MainWindow_ui.py文件代码如下:

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

################################################################################
## Form generated from reading UI file 'MainWindow.ui'
##
## Created by: Qt User Interface Compiler version 6.4.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QMainWindow, QSizePolicy, QWidget)

from pyechartWidget import PyechartWidget

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = PyechartWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
    # retranslateUi

自定义pyechartWidget.py文件如下:

from PySide6.QtWidgets import QWidget
from pyechartWidget_ui import Ui_pyechart_Widget

class PyechartWidget(QWidget):
    def __init__(self,parent):
        super().__init__()
        self.ui = Ui_pyechart_Widget()
        self.ui.setupUi(self)

自动生成的 pyechartWidget_ui.py文件如下:

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

################################################################################
## Form generated from reading UI file 'pyechartWidget.ui'
##
## Created by: Qt User Interface Compiler version 6.4.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtWidgets import (QApplication, QLabel, QSizePolicy, QVBoxLayout,
    QWidget)

class Ui_pyechart_Widget(object):
    def setupUi(self, pyechart_Widget):
        if not pyechart_Widget.objectName():
            pyechart_Widget.setObjectName(u"pyechart_Widget")
        pyechart_Widget.resize(838, 713)
        self.verticalLayout = QVBoxLayout(pyechart_Widget)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.webEngineView = QWebEngineView(pyechart_Widget)
        self.webEngineView.setObjectName(u"webEngineView")
        self.webEngineView.setUrl(QUrl(u"about:blank"))

        self.verticalLayout.addWidget(self.webEngineView)

        self.label = QLabel(pyechart_Widget)
        self.label.setObjectName(u"label")

        self.verticalLayout.addWidget(self.label)


        self.retranslateUi(pyechart_Widget)

        QMetaObject.connectSlotsByName(pyechart_Widget)
    # setupUi

    def retranslateUi(self, pyechart_Widget):
        pyechart_Widget.setWindowTitle(QCoreApplication.translate("pyechart_Widget", u"Form", None))
        self.label.setText(QCoreApplication.translate("pyechart_Widget", u"\u8fd9\u65f6\u81ea\u5b9a\u4e49\u7684widget", None))
    # retranslateUi

运行主函数,即可看到自定义控件的嵌入,使用此种方法可以实现UI文件和控制文件的分离。

qwidget嵌套,Pyside6+PyEcharts集成记录,python,ui,pyqt文章来源地址https://www.toymoban.com/news/detail-716611.html

到了这里,关于Pyside6实现自定义widget嵌套(自定义widget为独立ui文件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pyside6:加载.ui

    通常来说开发Qt的界面基本都在Qt Designer中进行的,它保存的文件为.ui,我们可以通过uic将其转变为.py文件(如何使用:Pyside6:安装及Pycharm配置_pyside6安装pycharm-CSDN博客)。 那么该如何进行加载呢?大致来说有两种方法: 这个非常简单,无需把.ui文件进行转换,但 loader.loa

    2024年02月03日
    浏览(43)
  • 【无标题】PySide6在非UI线程更新UI界面实例

            写一个SonThread类继承于QThread,直接在run函数中写我们要执行的动作(更新UI界面)。优点比较简单易懂,缺点只能被一种事件使用,不能重复利用。         使用threading来创建新线程,在新线程中使用SonThread来更新UI界面。只用写一个更新UI界面的类,可以被很多的

    2024年02月16日
    浏览(56)
  • Pyside6入门教学——编写一个UI界面并显示

    1、安装Pyside6 输入下列命令安装Pyside6。 2、设计UI 打开Qt设计工具(在安装Pyside6包的目录下)。 【注】我这用的是anaconda虚拟环境,所以我的路径是D:AppAnaconda3envssnakeLibsite-packagesPySide6。 设计一个界面,如何设计这里不详细讲解。 设计完后保存,得到一个ui文件。(另存

    2024年01月20日
    浏览(49)
  • Pyside6(3): 自动生成UI的Qt参数输入对话框

    参数输入界面是桌面软件开发最繁琐的部分之一。特别是当系统中存在多种可编辑的数值模型时,由于各个模型的字段不同,每个字段的输入类型也不同,需要制作不同的UI,使用不同的UI控件,无疑会耗费大量时间,同时拓展性也非常差,因为每增加一个数值模型,都需要制

    2024年02月03日
    浏览(58)
  • Python学习笔记——PySide6设计GUI应用之UI与逻辑分离

    1、打开PySide6的UI设计工具pyside6-designer,设计一个主窗口,保存文件名为testwindow.ui 2、使用PySide6的RCC工具把testwindow.ui文件转换为testwindow_rc.py文件,此文件中有一个类Ui_MainWindow(包含各种控件对象) 一、通过类继承实现: class TestMainWindow(QMainWindow, Ui_MainWindow): 定义了一个新的

    2024年04月16日
    浏览(56)
  • 【YOLOV5 入门】——Pyside6/PyQt5可视化UI界面&后端逻辑

    声明:笔记是做项目时根据B站博主视频学习时自己编写,请勿随意转载! VScode/Pycharm 终端进入虚拟环境后,输入下面代码安装 pyside6 ,若用的 Pycharm 作为集成开发环境,也下载个 pyqt5 : 安装完 pyside6 时其实一并安装了 qtdesigner ,这个工具可让我们以拖拽的方式设计界面,按

    2024年04月16日
    浏览(100)
  • pyside6 安装

    学习 pyside6 有很多的教程: pythonguis网站-pyside6教程 pyside官网 pyqt 和 pyside 的 api其实差不多,最大的区别是License,pyqt是GPL协议,pyside是LGPL协议。 前者不能商用,如果使用了pyqt,程序就要开源,商用必须支付购买费用,不然会吃官司,而后者可以商用。常见开源协议。 在版

    2024年02月15日
    浏览(50)
  • PySide6精简教程

    近几年,受益于人工智能的崛起,Python语言几乎以压倒性优势在众多编程语言中异军突起,成为AI时代的首选语言。在很多情况下,我们想要以图形化方式将我们的人工智能算法打包提供给用户使用,这时候选择以python为主的GUI框架就非常合适了。 QT是众多GUI框架里面非常著

    2024年02月03日
    浏览(47)
  • pyside6上位机开发

    ini文件

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包