处理关闭事件 accept/ignore
Handling closeEvent accept/ignore
我有一个主要的 window,它弹出第二个 window 和一些用户选项,用户可以单击其中一个选项或关闭这个新的 windows。
我希望每次用户关闭 windows 时再次弹出它,并且只在他选择一个选项时关闭它。
我正在这样做:
class PopUp_Window(QWidget):
def __init__(self, parent):
self.parent = parent
self.accept_button.clicked.connect(lambda:
self.closeEvent(event=QCloseEvent, accepted=True))
def closeEvent(self, event, accepted=False):
if not accepted:
self.parent.recreate_window()
event.ignore()
else:
event.accept()
如果用户关闭 windows 会重新创建它,但当他单击接受按钮时它不会关闭。
我猜 accepted
总是 False
那么。你为什么要重新打开弹出窗口?如果您忽略该事件,它将永远不会首先关闭。
你需要lambda函数吗?如果没有,这样的事情看起来更简单:
class PopUp_Window(QWidget):
def __init__(self, parent):
self.parent = parent
self.accepted = False
self.accept_button.clicked.connect(self.on_accept)
def on_accept(self):
self.accepted = True
self.close()
def closeEvent(self, event):
if self.accepted:
event.accept()
else:
event.ignore()
我有一个主要的 window,它弹出第二个 window 和一些用户选项,用户可以单击其中一个选项或关闭这个新的 windows。
我希望每次用户关闭 windows 时再次弹出它,并且只在他选择一个选项时关闭它。
我正在这样做:
class PopUp_Window(QWidget):
def __init__(self, parent):
self.parent = parent
self.accept_button.clicked.connect(lambda:
self.closeEvent(event=QCloseEvent, accepted=True))
def closeEvent(self, event, accepted=False):
if not accepted:
self.parent.recreate_window()
event.ignore()
else:
event.accept()
如果用户关闭 windows 会重新创建它,但当他单击接受按钮时它不会关闭。
我猜 accepted
总是 False
那么。你为什么要重新打开弹出窗口?如果您忽略该事件,它将永远不会首先关闭。
你需要lambda函数吗?如果没有,这样的事情看起来更简单:
class PopUp_Window(QWidget):
def __init__(self, parent):
self.parent = parent
self.accepted = False
self.accept_button.clicked.connect(self.on_accept)
def on_accept(self):
self.accepted = True
self.close()
def closeEvent(self, event):
if self.accepted:
event.accept()
else:
event.ignore()