【问题标题】:PyQt: Wait until widget closesPyQt:等到小部件关闭
【发布时间】:2013-10-19 03:43:31
【问题描述】:

我有一个窗口/小部件在我按下按钮后显示,有没有办法让主窗口等到小部件关闭?我现在正在使用.show(),我已经尝试使用.exec_(),但它给了我这个错误:

AttributeError: 'MainWindow' object has no attribute 'exec_'

有什么帮助吗?

【问题讨论】:

标签: python qt pyqt


【解决方案1】:

使用local event-loop 等待窗口/小部件关闭:

widget = QWidget()
widget.setAttribute(Qt.WA_DeleteOnClose)
widget.show()
loop = QEventLoop()
widget.destroyed.connect(loop.quit)
loop.exec() # wait ...
print('finished')

要同时阻止与其他窗口的交互,请设置window modality

widget.setWindowModality(Qt.ApplicationModal)

或对于具有父级的顶级窗口:

window.setWindowModality(Qt.WindowModal)

当然,如果您可以将窗口/小部件更改为QDialog,那么以上都不需要,因为exec 提供了相同的功能:

widget = QDialog()
widget.exec() # wait ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2011-06-17
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多