我遇到了在PySide和PySide2上都发生的奇怪错误。我试图将两个按钮类链接在一起,如果我在任何一个类中创建一个QPainter
,Qt只会拒绝加载。
没有回溯或输出任何东西,只是退出了加载的第二秒。
以下一些代码可以复制该错误:
from Qt import QtCore, QtGui, QtWidgets
class Btn1(QtWidgets.QPushButton):
def __init__(self, *args, **kwargs):
super(Btn1, self).__init__(*args, **kwargs)
class Btn2(QtWidgets.QPushButton):
def __init__(self, *args, **kwargs):
super(Btn2, self).__init__(*args, **kwargs)
class Btn(Btn1, Btn2):
def paintEvent(self, event):
painter = QtGui.QPainter(self)
super(Btn, self).paintEvent(event)
if __name__ == '__main__':
class ExampleWindow(QtWidgets.QWidget):
def __init__(self):
super(ExampleWindow, self).__init__()
layout = QtWidgets.QVBoxLayout()
layout.addWidget(Btn())
self.setLayout(layout)
import sys
app = QtWidgets.QApplication(sys.argv)
mainWin = ExampleWindow()
mainWin.show()
sys.exit(app.exec_())
实际用法:
我有单独的类,每个类都执行特定的功能。例如,一个涉及双击,另一个涉及拖放。由于每个功能都不重叠,我想将它们全部分开,并通过继承将它们结合在一起。