def confirm(self): with open('channel.txt', 'w') as file: for item in channel_list: file.write("%s\n" % item) print(channel_list) self.close() print(1)为什么界面没有正常关闭
时间: 2024-01-22 14:01:49 浏览: 123
在PyQt5中,如果你想要在`close()`方法被调用时执行一些操作(比如保存数据),你可以通过`event`参数来实现。具体来说,你可以在`closeEvent`方法中实现这些操作。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtGui import QCloseEvent
import sys
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个按钮
button = QPushButton("关闭界面", self)
button.move(50, 50)
button.clicked.connect(self.confirm)
def confirm(self):
with open('channel.txt', 'w') as file:
for item in channel_list:
file.write("%s\n" % item)
print(channel_list)
# 关闭当前界面
self.close()
def closeEvent(self, event: QCloseEvent) -> None:
# 在关闭窗口时保存数据
with open('channel.txt', 'w') as file:
for item in channel_list:
file.write("%s\n" % item)
print(channel_list)
# 调用父类的closeEvent方法来关闭窗口
super().closeEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们在`closeEvent`方法中实现了在关闭窗口时保存数据的操作,并通过调用父类的`closeEvent`方法来关闭窗口。请注意,这个例子中的代码是基于PyQt5的`QMainWindow`类编写的,如果你的界面不是基于`QMainWindow`类的,你需要用对应的窗口对象来替换`self`。
阅读全文