gpt4 book ai didi

python - 阻止并隐藏 QDialog : Alternative to exec_()?

转载 作者:行者123 更新时间:2023-12-01 06:05:16 30 4
gpt4 key购买 nike

在我基于 Qt 的应用程序(使用 PyQt 4.8.6 构建)中,我有一个类,它是 QtGui.QDialog 的子类:

class ModelDialog(QtGui.QDialog):
...

当我运行应用程序的用户界面时,我可以像这样显示 QDialog:

def main():
app = QtGui.QApplication(sys.argv)
dialog = ModelDialog()
dialog.exec_()

根据Qt docsPyQt docs , exec_() 是此 QDialog 的阻塞函数,它默认为模态窗口(根据定义,它阻止用户与应用程序中的任何其他窗口交互)。这正是正常情况下发生的情况。

然而,最近我一直在研究一种使用所有输入值的默认值来调用整个 QApplication 的方法,而不是要求用户提供任何输入。除了一个方面之外,应用程序的行为与预期一致:调用 dialog.exec_() 会导致显示模式对话框。

我能找到的唯一解决方法是捕获 showEvent 函数并立即隐藏窗口,但这仍然允许 QDialog 对象瞬间显示:

class ModelDialog(QtGui.QDialog):
...
def showEvent(self, data=None):
self.hide()

有没有办法阻止模式窗口完全显示,同时继续阻止主事件循环?我希望有这样的东西:

def main():
app = QtGui.QApplication(sys.argv)
dialog = ModelDialog()
dialog.setHideNoMatterWhat(True)
dialog.exec_()

(为此,我尝试使用QWidget.setVisible(False),但是dialog.exec_()将对话框设置为可见,这是预期的到 Qt docs )

最佳答案

使用app.exec_()而不是dialog.exec_()

关于python - 阻止并隐藏 QDialog : Alternative to exec_()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319687/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com