在PyQt5中实现点击按钮打开新窗口功能—窗口的跳转功能实现

news2024/9/23 21:28:43

百度搜索“pyqt5中如何点击按钮打开新的窗口”,自动生成以下参考代码。

在PyQt5中,要实现点击按钮打开新窗口,你需要定义一个新的窗口类,并在按钮的点击信号(clicked)处理函数中创建并显示这个新窗口。以下是一个简单的例子

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QVBoxLayout, QMessageBox
 
class NewWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("新窗口")
        self.show()
 
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")
        self.button = QPushButton("打开新窗口")
        self.button.clicked.connect(self.open_new_window)
 
        layout = QVBoxLayout()
        layout.addWidget(self.button)
 
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)
 
    def open_new_window(self):
        # 创建并显示新窗口
        self.new_window = NewWindow()
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

在这个例子中,MainWindow是主窗口类,它有一个按钮用于打开新窗口。当按钮被点击时,open_new_window方法会被调用,创建并显示NewWindow实例,即新窗口。

基于上述思路,使用一个主窗口类mainWindow管理多个窗口的跳转(窗口的显示和消失)

class mainWindow(QMainWindow):
    def __init__(self):
        super(mainWindow, self).__init__()
        self.login_window = loginWindow()
        self.login_window.show()

        self.menu_window = menuWindow()
        self.create_window = createWindow()
        # 连接信号与槽
        self.login_window.send_data.connect(self.menu_window.receive_data)
        # 点击登录按钮弹出新窗口,此登录界面窗口关闭
        self.login_window.login_pushButton.clicked.connect(self.open_menu_window)
        # 点击新建需求按钮,跳转出需求创建窗口
        self.menu_window.my_new_order_pushButton.clicked.connect(self.open_create_window)

    def open_menu_window(self):
        # 创建并显示新窗口
        self.menu_window.show()
        self.login_window.hide()

    def open_create_window(self):
        # 创建并显示新窗口
        self.create_window.show()
        self.menu_window.hide()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ui = mainWindow()
    # ui.show()
    sys.exit(app.exec_())

利用窗口逻辑业务代码与界面生成代码相分离的原则,在main.py中重新定义一个新的窗口类继承界面代码的类(界面代码在另外的.py文件)。

在这里插入图片描述

官方文档

QMainWindow类:https://doc.qt.io/qt-5/qmainwindow.html

QWidget类:https://doc.qt.io/qt-5/qwidget.html

QDialog类:https://doc.qt.io/qt-5/qdialog.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

继承的奥秘:面向对象编程中的血脉传承与智慧抉择

1. 概述 在面向对象编程(OOP)中,继承是构建复杂软件系统的基石之一。它允许我们定义一个类(称为父类或基类)作为其他类(称为子类或派生类)的基础,子类能够自动获得父类的属性和方法…

jQuery EasyUI textbox 值取不到问题

用textbox 存值点击修改的时候有些字段是不能更改的所以将textbox 的disabled属性设为true后 像这里的textbox disabled属性设为true是灰的 点击保存时这两个值没传 我们可以在提交保存前先将disabled属性先设为false,保存后又设为true

【PDF技巧】PDF如何解密?

PDF文件设置了加密,需要密码才能够打开文件或者编辑文件,那么如何解密PDF密码?今天我们来一起学习一下。 首先是在已知密码的情况下,PDF文件中的打开密码或者是限制编辑,想要解密PDF密码,我们只需要在PDF编…

关于easypoi使用@ExcelCollection一对多导致合并失效问题

导致无法合并的原因是序号中使用了自增的操作 将自增改为手动赋值就能正常合并了

微服务- protobuf 安装

这里写自定义目录标题 1:下载链接2 :下载对应的包3:解压到目录4:设置环境变量5: 查看版本 1:下载链接 https://github.com/protocolbuffers/protobuf/releases 2 :下载对应的包 3:解压到目录 4&…

LeetCode474:一和零

题目描述 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 代码 /*抽象为两个维度的背包问题 dp[i][j…

如何快速将视频做成二维码?扫描二维码播放视频的制作方法

视频二维码的用途越来越多,比如常见的有产品展示、企业宣传、教程说明、个人展示等都可以生成二维码,通过扫码在手机或者其他设备上预览内容,从而提升其他人获取视频的速度,实现内容的快速分享。 对于有制作视频二维码需求的小伙…

AI 一键生成高清短视频,视频 UP 主们卷起来...

现在短视频越来越火,据统计,2023年全球短视频用户数量已达 10 亿,预计到2027年将突破 24 亿。对于产品展示和用户营销来说,短视频已经成为重要阵地,不管你喜不喜欢它,你都得面对它,学会使用它。…

Java为什么会成为现在主流的编程语言

Java为什么会成为现在的主流语言 前言一、Java语言概述Java是什么为什么大多数人会选择从事Java为什么从事Java的工作者数量从年递减 二、Java语言的特点简单性面向对象分布式(微服务)健壮性安全性体系结构中立可移植性解释型高性能多线程动态性 三、Jav…

CF 944 (Div. 4) A~G

文章目录 A My First Sorting Problem(模拟)B Different String(模拟、字符串)C Clock and Strings(模拟)D Binary Cut (贪心)E Find the Car(二分查找、数学)F Circle Perimeter&am…

无独立显卡如何安装Pytorch

以前我是直接在colab中使用pytorch,非常方便,今天折腾了一上午,终于搞定了pytorh的安装和环境设置,分享下我的安装流程,遇到的问题和解决方案。 1. 用pip安装Pytorch 打开cmd窗口(按win R)&a…

Linux 第三十一章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

立创EDA绘制电路原理图

1、下载立创EDA并安装注册,这里我用的是标准版 2、在账号名右键,新建工程 3、以单片机时钟电路为例 4、首先绘制原理图 (1)放置元器件,以AT89C52为例,在元件库中查找单片机,找到后确认封装&…

机器人工具箱学习(三)

一、动力学方程 机器人的动力学公式描述如下: 式中, τ \boldsymbol{\tau} τ表示关节驱动力矩矢量; q , q ˙ , q \boldsymbol{q} ,\; \dot{\boldsymbol { q }} ,\; \ddot{\boldsymbol { q }} q,q˙​,q​分别为广义的关节位置、速度和加速…

JavaScript对象的声明

JS声明对象的语法 1 通过new Object()直接创建对象2 通过 { }形式创建对象 1 通过new Object()直接创建对象 代码 var person new Object(); // 给对象添加属性并赋值 person.name"张小明"; person.age10; person.foods["苹果","橘子","香…

吞吐量 和 延时的关系

关于吞吐量/吞吐率、延时,你可以通过 Jmeter中的”聚合报告“和”用表格查看报告“来获取。 Throughput 越大,Latency 越差:因为请求过多,系统繁忙导致响应速度降低。Latency 的值越小说明能支持的 Throughput 越高:L…

pdfMake,xlsx-js-style,elementTable表格导出大量数据的pdf和xslx表格

使用渲染dom传递给xlsx或将dom转canvas在传给jspdf数据量大都会造成页面负载过大 所以导pdf和xlsx都使用数据传递给pdfMake,xlsx-js-style,pdf涉及分页与合并单元格 一.pdf npm并引入pdfMake和其字体包(记录时使用版本0.2.10 import pdfMake from &qu…

仅1年!荣登中科院1区经济类SSCI宝座!影响因子3连涨,创刊时间不长但口碑飙升!

【SciencePub学术】今天小编给大家带来了一本经济学领域的高分优刊解读,创刊时间不长,但影响因子3连涨现已高达8.5,JCR1区,中科院1区,领域相符的学者可考虑! Oeconomia Copernicana 1 期刊概况 【期刊简介…

大龄程序员是否要入职嵌入式python岗位?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Python的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 是否要做嵌入式 Python 取决于…

vue(九) 生命周期 v3.0和v2.0对比,父子组件生命周期的执行顺序

文章目录 生命周期vue2.0生命周期1.图示2.生命周期解释说明3.代码示例 vue3.0生命周期1.图示2.生命周期解释说明3.代码示例 父子组件中生命周期执行顺序v.3和v2.0生命周期对比 生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听…