关闭窗口时如何触发pyqt5信号[重复]

Posted

技术标签:

【中文标题】关闭窗口时如何触发pyqt5信号[重复]【英文标题】:How to trigger a pyqt5 signal when closing a window [duplicate] 【发布时间】:2021-11-23 21:24:12 【问题描述】:

我想在每次关闭其他窗口时触发 pyqt 信号以重新打开菜单, 我认为QMainWindow 类没有.closed 信号,你能帮帮我吗?

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
import Caixa
import Estoque
import Relatorio

app = QApplication(sys.argv)
menu = uic.loadUi(r'window/menu.ui')


caixa = Caixa.Window()
estoque = Estoque.Window()
relatorio = Relatorio.Window()

# gatilhos
menu.caixa.clicked.connect(lambda: caixa.open())
menu.caixa.clicked.connect(lambda: menu.close())

menu.produtos.clicked.connect(lambda: estoque.open())
menu.produtos.clicked.connect(lambda: menu.hide())

menu.relatorio.clicked.connect(lambda: relatorio.open())
menu.relatorio.clicked.connect(lambda: menu.hide())

estoque.window.exit.triggered.connect(lambda: menu.show())
caixa.window.exit.triggered.connect(lambda: menu.show())
relatorio.window.exit.triggered.connect(lambda: menu.show())

menu.show()
sys.exit(app.exec_())

【问题讨论】:

【参考方案1】:

您可以使用“atexit”处理程序。 atexit Documents

在我的例子中

import atexit

atexit.register(/*call your function here*/)

所以当窗口关闭时,它会注册一个信号并调用需要的函数。

【讨论】:

以上是关于关闭窗口时如何触发pyqt5信号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

浏览器关闭时如何触发jQuery [重复]

关闭窗口时触发功能[重复]

PyQt5如何在第一个窗口关闭时更改第二个窗口

如何在不关闭 GUI 窗口的情况下停止运行 PyQt5 程序?

PyQt5如何暂时隐藏主窗口? [关闭]

PyQt5从子窗口关闭父窗口和子窗口