PYQT6| Python GUI(三)子窗口的跳转

  • Post author:
  • Post category:python




PYQT6|Python GUI系列文章


PYQT|Python GUI(一)GUI制作的准备工作(在VsCode中的配置)


PYQT6|Python GUI制作(二)qtdesigner ui转py后的运行


目录


PYQT6|Python GUI系列文章


前言


二、代码介绍


1.子窗口代码


2.子窗口跳转




前言

想要加入子窗口?不明白?下面是一种实现方式

简要介绍:在一个主窗口中,通过按钮实现一个子窗口的跳转。



一、前期工作

要想实现子窗口的跳转,那首先是,创建好主窗口和子窗口

1. 主窗口 MainWidget

2 子窗口 ChildWidget

说明:此处的子窗口和主窗口均在qt designer 中创建

跳转按键 三点



二、代码介绍



1.子窗口代码

由qt designer创建得到子窗口(此处命名为Intro),并转换成py代码后,我们得到以下代码,

import sys 
import Intro#Intro为子窗口的文件名
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtWidgets import QApplication, QWidget
class Introduction(QtWidgets.QMainWindow):#子窗口类函数
    def setupUi(self, ChlidWidget):#子窗口设置
        #由qt designer 的ui文件转换得到的py代码,此处省略
        #……………………
    def retranslateUi(self, ChlidWidget):#子窗口文本
        #略

在原始代码下增加以下代码,子窗口文件可以单独运行。

详细介绍可以参考我pyqt6专栏中的

if __name__ == '__main__':#子窗口运行
    app = QApplication(sys.argv)
    ChildWidget= QWidget()
    ui = Intro.Introduction()
    ui.setupUi(ChildWidget)
    ChildWidget.show()
    sys.exit(app.exec())

2.子窗口跳转

但是如何在主窗口中实现子窗口的跳转呢?

1.首先我们需要在子窗口的类函数中加入下面这段代码

def __init__(self):#类封装用于跳转
        super(Introduction,self).__init__() #Introduction 为子窗口类函数,注意替换
        self.setupUi(self)
        self.retranslateUi(self)

加入位置如下图所示:

2.接下来,切换到主窗口代码

首先,先引用子窗口文件 (也就是图片第4行的代码

from Intro import*

同样的,在主窗口的类函数中进行类封装:

def __init__(self):#封装类函数用以窗口跳转
    super(Ui_MainWindow,self).__init__() #Ui——MainWindow 为主窗口类函数,参考下图
    self.setupUi(self)
    self.retranslateUi(self)

3 将子窗口函数和主窗口中的按钮链接起来

(1)在主窗口代码文件中定义子窗口跳转函数

def B_introduction(self):#子窗口跳转函数
    ui_intro.show()

(2)将跳转函数与主窗口按钮链接

def setupUi(self, MainWindow):#主窗口设置函数
    #设置跳转按钮
    #也就是上面图片显示的省略号按钮,这一步可以直接在qtdesigner中拖动放置,会直接生成
    #我将跳转按钮命名为Button_introd
    #按钮类型即命名
    self.Button_introd = QtWidgets.QToolButton(self.centralwidget)
    #设置按钮的位置 QRect(x,y,a,b) x,y为横纵坐标,a,b为按钮占据的位置的长宽(这解释并不规范)
    self.Button_introd.setGeometry(QtCore.QRect(150, 410, 21, 22))
    self.Button_introd.setObjectName("Button_introd")
    #将按钮与跳转函数链接,点击按钮就可以实现跳转
    self.Button_introd.clicked.connect(self.B_introduction)

做完上面这些步骤,你就可以实现子窗口的跳转了。

跳转效果如下图所示



总结


以上就是本文的所有内容,由于水平有限,有一些介绍或许有不正确的地方,大家见谅。



版权声明:本文为FOFOD原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。