欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

PYQT6|PythonGUI(三)子窗口的跳转

时间:2023-05-25
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, QtWidgetsfrom PyQt6.QtWidgets import QApplication, QWidgetclass 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)

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

跳转效果如下图所示


总结

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。