上面的代码,窗口退出后,print(widget.text)语句根本不会执行。
时间: 2024-03-14 19:44:33 浏览: 42
这可能是因为窗口退出后,程序已经停止运行,导致print语句没有被执行。你可以尝试在窗口退出前添加一个信号,使得窗口退出时能够执行一些操作,如下所示:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import pyqtSignal
class MyWidget(QWidget):
text_changed = pyqtSignal(str)
def __init__(self):
super().__init__()
self.text = ""
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('My Widget')
self.show()
def closeEvent(self, event):
self.text_changed.emit(self.text)
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.text = "Hello World"
widget.text_changed.connect(lambda x: print(x))
sys.exit(app.exec_())
```
在上面的代码中,我们添加了一个`text_changed`信号,并在窗口关闭时发射该信号,同时将`widget.text`作为参数传递给信号的槽函数,从而在窗口关闭时执行`print`语句。