一起继承2个小部件并使用QPainter会导致Qt在加载时失败

时间:2019-05-03 12:08:56

标签: python pyside2

我遇到了在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_())

实际用法:

我有单独的类,每个类都执行特定的功能。例如,一个涉及双击,另一个涉及拖放。由于每个功能都不重叠,我想将它们全部分开,并通过继承将它们结合在一起。

0 个答案:

没有答案