1
在PySide中,我想用定義信號作爲參數的類發出一個信號。例如:如何在PySide中將自身作爲參數發出信號?
class MyWidget(QtGui.QWidget):
signal_widget_closed = QtCore.Signal(MyWidget)
def close(self):
super(MyWidget, self).close()
self.signal_widget_closed.emit(self)
但是,第二行提供了一個NameError,因爲MyWidget在那時還不存在。 現在我解決這個問題通過發射一個QWidget這樣
signal_widget_closed = QtCore.Signal(QtGui.QWidget)
但我寧願用進myWidget的解決方案類型。有任何想法嗎?
這是行不通的,如果我再調用插槽作爲一個正常的過程(或我將不得不單獨實現這兩種情況下的功能)。您鏈接的頁面爲此發出警告並說:_「此功能違反了模塊化的面向對象原則。」_ 儘管如此,瞭解此選項仍是一件好事。謝謝你提到它。 – titusjan
@titusjan唯一的解決方案似乎是使用元類,我可以說這是不值得的。也許嘗試重新思考你的應用程序的體系結構。 –
基本上你需要[引用自己內部的類](http://google.com/search?q=python+reference+class+inside+itself)。但是在類定義之後添加信號的解決方案將不起作用,因爲PySide在定義類之後似乎使用元類來讀取這些信號。 –