Skip to main content
 首页 » 编程设计

python之自定义 QDialog 窃取全屏应用程序焦点并显示任务栏

2025年05月04日9shanyou

我想知道如何使用我自己的按钮制作自定义 QDialog 消息框,类似于下面的代码。

到目前为止,我已经有了这段代码,它运行良好。此代码的问题在于它从全屏应用程序启动,并且窃取了它的焦点(顶部的主任务栏与 QDialog 对象一起出现)。我希望它能在后台与我的全屏应用程序无缝协作,这意味着当我单击按钮以显示此消息框时,顶部的任务栏不应出现。我在 Ubuntu 11.10 中使用 PyQt4 和 Python 2.7.2 工作。

btnOne = QPushButton("One", self) 
btnTwo = QPushButton("Two", self) 
btnOne.clicked.connect(self.workForOne) 
btnTwo.clicked.connect(self.workForTwo) 
msgBox = QMessageBox() 
msgBox.setText("<center>This is a custom question!</center>") 
msgBox.setWindowTitle("Question") 
msgBox.setWindowModality(Qt.ApplicationModal) 
msgBox.addButton(btnOne, QMessageBox.ActionRole) 
msgBox.addButton(btnTwo, QMessageBox.ActionRole) 
msgBox.addButton(QMessageBox.Cancel) 
msgBox.exec_() 

请您参考如下方法:

我认为您遇到的问题是您没有为您的 msgBox 提供父级。这使得 Qt 将其视为顶级窗口。尝试将消息框的实例化更改为如下所示:

msgBox = QMessageBox(self)