class testWidget(QtGui.QWidget): def __init__(self, parent=None): super(testWidget, self).__init__(parent) self.parent = parent self.something() def something(self): self.parent.callme() # self.parent?.... nice? class testClass(): def __init__(self): self.widget = testWidget(parent=self)
test = testClass()python pyqt和父類
在python(pyqt)中處理父類最清潔的方式是什麼? 有比直接調用self.parent更好的方法嗎?
編輯 - 問題2:
class testWidget(QtGui.QWidget): def __init__(self, parent=None): super(testWidget, self).__init__(parent) self.say_hello() def say_hello(self): self.parent().hello() # <- works fine here def focusInEvent(self, event): self.parent().hello() # gives error in focusInEvent class testClass(QtGui.QWidget): def __init__(self): super(testClass, self).__init__(None) self.widget = testWidget(parent=self) def hello(self): print "hello"
test = testClass()
AttributeError的:「QWidget的」對象有沒有屬性「你好」
坦率地說,從其子部件調用父窗口小部件方法是一個壞主意。或者把這個方法作爲一個普通的函數,或者使用[event filter](http://stackoverflow.com/questions/9442165/pyqt-mouse-events-for-qtabwidget)[catch focusInEvent event](http:// stackoverflow.com/questions/321656/when-a-qt-widget-gets-focus)。 – warvariuc 2012-08-08 11:52:49