Windows中未显示的PyQt对话框的任务栏标题

时间:2012-04-09 20:33:25

标签: python windows qt user-interface pyqt

我有一个PyQt应用程序,它有一个主窗口和一些对话框,一些模态,一些不是。该应用程序是跨平台的,但此特定问题特定于Windows。

如果对话框不是父对象(模态或非对象),则它在与主窗口相同的组下有自己的任务栏条目,但任务栏标题始终为“python”。调用setWindowTitle()在主窗口上按预期运行,但仅影响其他对话框的标题栏。我玩过窗口标志,并通过PyWin32寻找低级别,特定于Windows的方法,但到目前为止还没有运气。

我还可以做些什么来修改未授权对话框的任务栏标题?

(旁注:如果我是非模态对话框,则任务栏不是问题,但这些对话框总是在主窗口的顶部,这是不可取的)

(旁注2:由于外部依赖性,我现在仅限于Qt 4.5.3和PyQt 4.5.4)

下面是一些展示问题的示例代码。这是一个简单的QMainWindow,带有用于弹出对话框的按钮。主窗口在任务栏中显示为“主窗口”。如果单击“打开未实现的对话框”按钮,对话框的标题栏中会出现标题“无实现”,但任务栏显示为“python”。

    import sys
    from PyQt4 import QtCore, QtGui

    mainWindow = None

    def openDialog(parent):
        global mainWindow
        dialog = QtGui.QDialog(parent)
        layout = QtGui.QVBoxLayout()
        buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel)
        buttonBox.rejected.connect(dialog.reject)
        layout.addWidget(buttonBox)
        dialog.setLayout(layout)
        dialog.setWindowTitle('Parented' if parent is not None else 'Unparented')

        dialog.exec_()

    def openUnparentedDialog():
        openDialog(None)

    def openParentedDialog():
        openDialog(mainWindow)

    def main():
        global mainWindow
        app = QtGui.QApplication(sys.argv)
        mainWindow = QtGui.QMainWindow()
        mainWidget = QtGui.QWidget()
        mainWindow.setCentralWidget(mainWidget)

        layout = QtGui.QVBoxLayout()
        mainWidget.setLayout(layout)

        button1 = QtGui.QPushButton('Open Unparented Dialog')
        button1.clicked.connect(openUnparentedDialog)
        layout.addWidget(button1)

        button2 = QtGui.QPushButton('Open Parented Dialog')
        button2.clicked.connect(openParentedDialog)
        layout.addWidget(button2)

        mainWindow.setWindowTitle('Main Window')
        mainWindow.show()
        app.exec_()

    if __name__ == '__main__':
        main()

0 个答案:

没有答案