每当我使用辅助(子)窗口创建PyQt4应用程序时,它们都不会最小化到Windows 7任务栏。只有主(父)窗口显示在任务栏上。当子窗口最小化时,它会折叠到屏幕底部,只显示标题栏(和标题栏按钮)。下面是一些演示此行为的示例代码:
import sys
from PyQt4 import QtGui, QtCore
class Parent(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Parent, self).__init__(parent)
w = QtGui.QWidget()
layout = QtGui.QVBoxLayout(w)
self.button = QtGui.QPushButton('Create Child')
self.text = QtGui.QTextEdit()
layout.addWidget(self.button)
layout.addWidget(self.text)
self.setCentralWidget(w)
self.setWindowTitle('Parent')
self.button.clicked.connect(self.createChild)
def createChild(self):
self.dialog = QtGui.QMainWindow(self)
#self.dialog.setParent(None)
self.dialog.setWindowTitle('Child')
self.dialog.show()
app = QtGui.QApplication(sys.argv)
p = Parent()
p.show()
sys.exit(app.exec_())
我让pyqt应用程序按照我想要的方式运行的唯一方法是将子窗口的父窗口设置为None。
self.dialog.setParent(None)
这样做可以让跟踪儿童窗户比我想象的要复杂得多。例如,关闭主窗口不会关闭辅助窗口。使用额外的代码,这可以工作,但必须打破父关系似乎很奇怪。我错过了什么吗?