当前位置: 首页 > 面试题库 >

PyQt:如何隐藏QMainWindow

万俟震博
2023-03-14
问题内容

单击Dialog_01的按钮 将隐藏 其窗口并打开Dialog_02。单击Dialog_02的按钮应 关闭 其窗口并 取消隐藏Dialog_01。如何实现呢?

import sys, os
from PyQt4 import QtCore, QtGui

class Dialog_02(QtGui.QMainWindow):
    def __init__(self):
        super(Dialog_02, self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()

        Button_02 = QtGui.QPushButton("Close THIS and Unhide Dialog 01")
        Button_02.clicked.connect(self.closeAndReturn)
        myBoxLayout.addWidget(Button_02)

        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.setWindowTitle('Dialog 02')

    def closeAndReturn(self):
        self.close()

class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(Dialog_01, self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()

        Button_01 = QtGui.QPushButton("Hide THIS and Open Dialog 02")
        Button_01.clicked.connect(self.callAnotherQMainWindow)
        myBoxLayout.addWidget(Button_01)

        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.setWindowTitle('Dialog 01')

    def callAnotherQMainWindow(self):
        self.hide()
        self.dialog_02 = Dialog_02()
        self.dialog_02.show()
        self.dialog_02.raise_()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialog_1 = Dialog_01()
    dialog_1.show()
    sys.exit(app.exec_())

问题答案:

将第一个窗口作为第二个窗口的父窗口:

class Dialog_02(QtGui.QMainWindow):
    def __init__(self, parent):
        super(Dialog_02, self).__init__(parent)
        # ensure this window gets garbage-collected when closed
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
    ...

    def closeAndReturn(self):
        self.close()
        self.parent().show()

class Dialog_01(QtGui.QMainWindow):
    ...

    def callAnotherQMainWindow(self):
        self.hide()
        self.dialog_02 = Dialog_02(self)
        self.dialog_02.show()

如果您希望每次都显示相同的对话框,请执行以下操作:

    def callAnotherQMainWindow(self):
        self.hide()
        if not hassattr(self, 'dialog_02'):
            self.dialog_02 = Dialog_02(self)
        self.dialog_02.show()

hide()子窗口,而不是关闭它。



 类似资料:
  • 我有一个代码与许多评论,我如何可以隐藏这些,但没有删除,我需要他们之后。

  • 我有一个非常简单的窗口,它包含一个按钮:。 在main函数中,我设置了我的并且在按钮监听器中,我想关闭窗口,所以我将可见性设置为false:之后,我执行以防止在多次运行程序时可能出现的内存泄漏。 我有两个问题: 在上述情况下,我真的需要吗? 如果我有这个作为

  • 问题内容: 有人可以告诉我如何始终隐藏视图吗? 我正在使用隐藏视图,但是当重新打开应用程序时,我必须重新隐藏视图。我希望单击按钮时始终隐藏视图,直到清除应用程序数据或卸载为止。谢谢! 问题答案: 没有永久隐藏的选项,但是您可以通过这种方式实现 1.删​​除具体的 您必须将状态保存到了像永久存储 共享首选项/数据库 共享首选项示例 1.将值存储在: 2.从中获取价值:

  • 问题内容: 我需要自定义JSlider的旋钮。我需要将自己的旋钮图像放在Jslider的默认旋钮上。问题是当前有两个旋钮在响应。一个是我自己的旋钮,另一个是默认旋钮。请告诉我如何隐藏默认旋钮或任何其他解决方案。 下面的代码用于执行此操作。 感谢Jyoti 问题答案: 要隐藏旋钮,请使用空白图标覆盖UIManager的属性,如下所示:

  • 问题内容: 我有一个应用程序,有时需要其导航栏与内容融合。 有谁知道如何摆脱或改变这个烦人的小酒吧的颜色? 在下面的图片中,我遇到的情况-我正在谈论“ Root View Controller”下方的1px高度线 问题答案: 使用物业 如果此属性为nil或包含纯色,则该条不显示阴影 例如: 对于iOS 12及以下版本: 为此,您应该设置自定义阴影图像。但是要显示阴影图像,您还需要设置自定义背景图像

  • 我有一个javascript函数,可以动态创建一个按钮,该按钮的ID调用一个使其唯一的值。 因为它有一个调用值的id,所以在某些情况下,我将如何使用方法来隐藏这个按钮?