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

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)

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

跳转效果如下图所示


总结

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

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python GUI 中,实现窗口跳转可以使用以下方法: 1. Tkinter:使用 `Toplevel` 组件来创建新窗口,在需要跳转的地方调用 `Toplevel` 的 `grab_set()` 方法来使新窗口获取焦点。示例代码如下: ``` import tkinter as tk root = tk.Tk() def open_new_window(): new_window = tk.Toplevel(root) new_window.grab_set() button = tk.Button(root, text="打开新窗口", command=open_new_window) button.pack() root.mainloop() ``` 2. PyQt:使用 `QStackedWidget` 组件来实现窗口跳转,在需要跳转的地方调用 `setCurrentIndex()` 方法来切换窗口。示例代码如下: ``` from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QStackedWidget app = QApplication([]) window = QWidget() layout = QVBoxLayout() stacked_widget = QStackedWidget() layout.addWidget(stacked_widget) # 第一个窗口 first_window = QWidget() first_layout = QVBoxLayout() first_label = QLabel("第一个窗口") first_layout.addWidget(first_label) first_button = QPushButton("跳转到第二个窗口") first_button.clicked.connect(lambda: stacked_widget.setCurrentIndex(1)) first_layout.addWidget(first_button) first_window.setLayout(first_layout) stacked_widget.addWidget(first_window) # 第二个窗口 second_window = QWidget() second_layout = QVBoxLayout() second_label = QLabel("第二个窗口") second_layout.addWidget(second_label) second_button = QPushButton("跳转到第一个窗口") second_button.clicked.connect(lambda: stacked_widget.setCurrentIndex(0)) second_layout.addWidget(second_button) second_window.setLayout(second_layout) stacked_widget.addWidget(second_window) window.setLayout(layout) window.show() app.exec_() ``` 以上两种方法都可以实现窗口跳转,根据使用的 GUI 库不同,具体实现方法会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值