resizeEvent在小部件调用show()之后不起作用

问题描述 投票:1回答:2
# code#1
import sys
from PyQt5.QtWidgets import QApplication, QPushButton

def onResize(event):
    print("Nice to get here!")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QPushButton('Test')
    widget.resize(640, 480)
    widget.show()
    widget.resizeEvent = onResize
    sys.exit(app.exec_())

此代码#1中从未触发过新的resizeEvent(当我手动调整窗口大小时。)>

# code#2
import sys
from PyQt5.QtWidgets import QApplication, QPushButton

def onResize(event):
    print("Nice to get here!")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = QPushButton('Test')
    widget.resize(640, 480)
    widget.resizeEvent = onResize
    widget.show()
    sys.exit(app.exec_())

新的resizeEvent在此代码#2中很好地触发了(当我手动调整窗口大小时)。而且我可以看到味精打印出来。

有人知道原因吗?即使我在代码#1的widget.update()之后添加widget.show()widget.resizeEvent = onResize,resizeEvent代码也保持沉默...

### 1从PyQt5.QtWidgets导入sys导入QApplication,QPushButton def onResize(event):print(“很高兴来到这里!”)如果__name__ ==“ __main__”:app = QApplication(sys.argv)小部件= ...

python pyqt pyqt5
2个回答
0
投票

PyQt的创建者Phil Thompson在thread中谈到了这一点。


0
投票

resizeEvent是一种“虚拟保护”方法,这种方法不应像这样“覆盖”。

© www.soinside.com 2019 - 2024. All rights reserved.