我最近被问到 pyqt 继承中的一个问题,问题是:假设我有一个带有方法的类 AcloseEvent(event)
和一个继承 A 和 QMainWindow 的类 B(因此有一个closeEvent(event)
方法)。解决顺序是closeEvent
什么?考虑到 python 文档,这将取决于继承顺序。但是下面的例子表明情况并非如此......有人可以帮忙吗?我在带有 PyQt5 的 Windows 上使用 Python3.6.2。
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
class A():
def closeEvent(self,event):
print("A")
class B(QMainWindow):
def closeEvent(self,event):
print("B")
super().closeEvent(event)
class C(A,B):
pass
class D(B,A):
pass
class E(QMainWindow,A):
pass
class F(A,QMainWindow):
pass
def test(TestClass, msg):
"""Create class instance and show it. Click on cross to close."""
print(msg)
app = QApplication(sys.argv)
test = TestClass()
test.show()
app.exec()
test(C,"C(A,B)?") # >>> A
test(D,"D(B,A)?") # >>> B
test(E,"E(QMainWindow,A)?") # >>> A ??? Why ???
test(F,"F(A,QMainWindow)?") # >>> A