PyQt5 QDialog隐藏问号按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5 QDialog隐藏问号按钮相关的知识,希望对你有一定的参考价值。

参考技术A 实例:

PyQt - 隐藏 MainWindow 并显示 QDialog 而不会消失任务栏图标

【中文标题】PyQt - 隐藏 MainWindow 并显示 QDialog 而不会消失任务栏图标【英文标题】:PyQt - Hide MainWindow and show QDialog without the taskbar icon disappearing 【发布时间】:2016-08-03 09:00:23 【问题描述】:

我一直在使用此示例中的代码PyQt: How to hide QMainWindow:

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()

它可以工作,但是当打开第二个窗口时,该窗口的任务栏图标不显示。我也尝试将 QtGui.QDialog 用于 Dialog_02,但这给了我相同的结果。

我该如何解决这个问题?

编辑:我使用的是 Windows 10

【问题讨论】:

【参考方案1】:

只是猜测(因为我不知道你在什么平台上,而且我自己不使用任务栏,所以我无法真正测试它),但尝试摆脱父:

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

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

【讨论】:

我已经尝试过你的方法并且它确实有效,但是当调用 closeAndReturn 函数返回到主窗口时它失败给我这个错误:self._other_window().show() -> TypeError: “窗口”对象不可调用 没关系。我写的是 self._other_window().show() 而不是 self._other_window.show()

以上是关于PyQt5 QDialog隐藏问号按钮的主要内容,如果未能解决你的问题,请参考以下文章

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT编程的QDialog对话框右上角的问号按钮如何取消呢

PyQt5 QDialog 在后续线程中

后续线程中的PyQt5 QDialog

PyQt5 控件学习(一个一个学习之QDialog)