PyQt:为什么新窗口打开后立即关闭[重复]

2024-01-05

我有一个主窗口,我想在按下按钮时打开另一个窗口(不是对话框)。我的问题是新窗口打开后几乎立即关闭。我已阅读可用的文章,并尝试实施解决方案,但似乎没有运气。这是我的整个代码:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MainWindow (QMainWindow):
    def __init__(self):
        win = QWidget()
        win.adjustSize()
        grid=QGridLayout()
        grid.setRowStretch(0, 1)
        grid.setRowStretch(1, 1)
        grid.setRowStretch(5, 1)
        for i in range(0,5):
            for j in range(0,4):
                if i==0 and j==2:
                    l1=grid.addWidget(QLabel("Choose an option:"),i,j, 2, 2)
                if i==2 and j==1:
                    b1= QPushButton("Get Best Match")
                    grid.addWidget(b1,i,j)
                elif i==2 and j==2:
                    b2=QPushButton("Button2")
                    grid.addWidget(b2,i,j)
                elif i==2 and j==3:
                    b3=QPushButton("Button3")
                    grid.addWidget(b3,i,j)
        b5=grid.addWidget(QLabel(""),3,4) 
        b4=QPushButton("Button4")
        grid.addWidget(b4,2,4)
        w1=b1.clicked.connect(window1)
        b2.clicked.connect(Win2)
        b3.clicked.connect(Win3)
        b4.clicked.connect(Win4)            
        win.setLayout(grid)
        win.setGeometry(100,100,width//2,height//2,)
        win.setWindowTitle("PYQT")
        win.show()
        win.setStyleSheet("""
        .QPushButton {
        height: 30px ;
        width: 20px ; 
        }
        .QLabel {
        qproperty-alignment: AlignCenter;
        font-size:12pt
         }

         """)
        sys.exit(app.exec_())

class window1():
    def __init__(self, pressed):
        super(window1, self).__init__()
        win1 = QWidget()
        win1.adjustSize()
        win1.setGeometry(100,100,width//2,height//2,)
        win1.setWindowTitle("Get Best Match")
        win1.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    screen_resolution = app.desktop().screenGeometry()
    width, height = screen_resolution.width(), screen_resolution.height()
    main=MainWindow()

有人可以帮我解决这个问题吗?我已经被困了一段时间了。


窗口正在消失,因为它超出了您的范围__init__功能。由于没有进一步引用它,Python 垃圾收集器将其删除。

通常 PyQt 对象会保留对其子对象的引用,因此这不是问题。由于您希望该小部件在单独的窗口中打开,因此您无法为其分配父窗口,因此您需要在其他地方存储对其的引用。明显的候选人是MainWindow class.

你(们)能做到win的成员MainWindow通过使用self.win = QWidget()代替win = QWidget()。该窗口现在将在生命周期中保持打开状态MainWindow除非你关闭它。

您的代码还有其他问题,但这解释了窗口消失的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyQt:为什么新窗口打开后立即关闭[重复] 的相关文章

随机推荐

  • Activity.finish() 方法到底在做什么?

    我正在开发 Android 应用程序一段时间 并关注了很多有关 Activity 生命周期和应用程序生命周期的帖子 I know Activity finish 方法在某处调用Activity onDestroy 并且还从堆栈中删除活动 我
  • 为什么 inet_ntoa 和 inet_ntop “反转”字节?

    这是一个相当基本的问题 令我惊讶的是 我今天遇到了问题 在我看来 inet pton 和 inet ntoa 正在反转给定的 IP 地址的字节 DWORD IP inet pton AF INET 192 168 0 1 IP printf
  • 我可以在没有扩展名的 zip 文件上使用 PowerShell `Expand-Archive`

    我正在编写一个 PowerShell 脚本 我必须从其中提取内容 zip存档的扩展名已被删除 因此 存档的名称可以说不是test zip只是test 并且它被压缩为 zip档案 我正在尝试为此目的使用 PowerShell cmdletEx
  • 改变 redux 状态深处的值

    context 我正在渲染一个带有一组动态文本元素的表单 我已经使用标准化了我的状态规范化原则 https github com paularmstrong normalizr因此有一个 elementIds 数组和一个包含 element
  • Python,Try、Except语句在X秒后超时?

    我一直在搜索这个问题 但似乎找不到确切的答案 大多数人都会陷入更复杂的事情 如多线程等 我只想做一些类似 Try except 语句的事情 如果过程没有完成在 X 秒内它将抛出异常 编辑 原因是我正在使用网站测试软件 selenium 其配
  • ASP.NET 日志记录 - 最佳实践 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Symfony 4,主义,getResult和getArrayResult和getScalarResult返回相同的结构结果

    从 symfony 4 开始 我创建了一个示例存储库类 在这个课程中 我创建了一个方法来获取所有电子邮件用户的列表 我想要一个像这样的数组结构 array email1 email2 email3 但通过 getResult 我得到了一个多
  • 如何在 TypeScript 中将类型重新导出为全局类型

    我希望有一个可全局访问的接口 在单独的文件中定义 我该怎么做 这是我的globals d ts file import Theme Style from style themes theme types declare global The
  • 我如何判断我的上下文是否仍然有效?

    我现在正在处理一个相当常见的情况 通过网络下载一些数据 然后更新视图以显示它 显然 我想在后台进行 Web 下载 然后更新主 UI 线程上的视图 现在看看我的代码 我有点担心我的 Activity 及其 UI 元素在更新之前被杀死 这是我的
  • 相对日期格式,输出过去的日期?

    我正在考虑使用 NSDateFormatter setDoesRelativeDateFormatting 将日期表示为 今天 或 昨天 我只查看过去的日期 但很好奇我会看到哪些针对英国本地化的选项 Just Today 昨天 或者任何更复
  • Android 蓝牙InputStream实时读取

    我正在开发一个 Android 应用程序 它通过蓝牙接收实时数据并将其绘制在屏幕上 该数据是陀螺仪传感器位置信息 我从定制的 Freescale Kinetis K10 微控制器板 由我自己设计和测试 发送它 对于蓝牙通信 我使用 HC 0
  • 如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

    我知道有一个ListBoxForASP NET MVC Html 辅助扩展方法中的扩展方法 但我一直认为复选框列表比列表框更用户友好 有一个非常方便的CheckBoxList旧式 WebForm 中的控制 但显然现在已经不可行了 问题是 为
  • AWS API Gateway - Elastic Beanstalk - 访问受限

    我在 Amazon EB 上有一个 NodeJS API 在 API Gateway 上有一个 API API Gateway 配置为 EB 的代理 我可以毫无问题地调用我的 API 它正在工作 但我不知道如何管理安全性 实际上 如果我使用
  • 在Python中任意时间捕获用户输入

    当用户在控制台中输入内容时 有没有办法向 python 模块发送中断 例如 如果我正在运行无限 while 循环 我可以用 try except for KeyboardInterrupt 包围它 然后在 except 块中执行我需要执行的
  • IIS Express Visual Studio 集成 - 更改站点名称

    我刚刚开始将 Visual Studio 2010 SP1 与 IIS Express 一起使用 当 Visual Studio 启动 IIS Express 时 它会指定用于启动 IIS Express 的 站点 的名称 该网站的名称似乎
  • 您如何管理开发、测试和生产中的数据库?

    我很难找到有关如何在开发 测试和生产服务器之间管理数据库模式和数据的好示例 这是我们的设置 每个开发人员都有一个运行我们的应用程序和 MySQL 数据库的虚拟机 这是他们的个人沙箱 可以为所欲为 目前 开发人员将对 SQL 架构进行更改 并
  • 将 ncurses 静态链接到程序

    我在将 ncurses 静态链接到我的程序之一时遇到一些问题 这是一个非常简单的示例程序 include
  • 无法解析符号:FusedLocationProviderClient。使用的 Google Play 服务版本为 11.0.1

    无法解析符号 FusedLocationProviderClient Google Play服务版本使用11 0 1 代码 while 声明 private FusedLocationProviderClient mfusedLocatio
  • 将 UIImage 分配到内存并释放它的正确方法是什么

    使用 Instruments 我不断发现 UIImage 内存泄漏 我认为我正在正确分配和释放内存 Instruments 中泄漏的对象被描述为 NSConcreteData 以下是分配和释放 UIImage 的正确方法吗 UIImage
  • PyQt:为什么新窗口打开后立即关闭[重复]

    这个问题在这里已经有答案了 我有一个主窗口 我想在按下按钮时打开另一个窗口 不是对话框 我的问题是新窗口打开后几乎立即关闭 我已阅读可用的文章 并尝试实施解决方案 但似乎没有运气 这是我的整个代码 import sys from PyQt4