Pyside oluşturulmuş bir python sınıfını miras alan bir iletişim sınıfım var ancak benim sorunum, başka bir temel sınıf ekleyerek genişletilememesi.PySide, PysideUIC ve Çoklu Kalıtım
import sys
from PySide import QtGui
from mi_ui import Ui_Dialog
class Worker(object):
def __init__(self):
super(Worker, self).__init__()
self.data = 1
class MainDialog(QtGui.QDialog, Ui_Dialog, Worker):
def __init__(self):
super(MainDialog, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dlg = MainDialog()
print dlg.data
dlg.show()
sys.exit(app.exec_())
Ben Worker
ile MainDialog
uzatmak çalıştığınızda süper çağırmaz Worker
'ın __init__
nedeniyle baskı dlg.data başarısız 'AttributeError: '
Çevremdeki tek çalışmam süper göz ardı ediyor ve her bir __init__
'u manuel olarak çağırıyor.
QtGui.QDialog.__init__(self)
Worker.__init__(self)
Bu benim tek çözümüm mü?
Bu, Python 2.7 içindir.
Deneyimlerim söz konusu olduğunda, 'super() 'PySide sarmalayıcıları Qt ile çalışmıyor ve PyQt'nin burada farklı olduğuna inanmıyorum. Yani '__init__'s el ile arama tek yol olabilir. Elmas şeklindeki miraslardan kaçınmayı (ya da etrafta doladığınızdan) emin olun. – quazgar