我正在開發GIS軟件QGIS的插件。我有一個QAction圖標,當它被選中時,它將組中的圖層連接到一個功能,只要它們的可見性被切換。然後,當它未被選中,它應該斷開這些功能,而是我收到一個錯誤:如何從QAction斷開功能?
Traceback (most recent call last):
File "C:/Users/Me/.qgis2/python/plugins\Example\Example.py", line 248, in run
layers.visibilityChanged.disconnect(print_one)
TypeError: 'function' object is not connected
這是一個例子代碼:
def run(self, checked):
root = QgsProject.instance().layerTreeRoot()
group = root.findGroup('Group')
def print_one():
print 'one'
if checked == True:
for layers in group.children():
layers.visibilityChanged.connect(print_one)
else:
for layers in group.children():
layers.visibilityChanged.disconnect(print_one)
爲什麼信號沒有斷開連接?
我只能使用layers.visibilityChanged.disconnect()
,但這會斷開所有信號,所以不符合我的興趣。
可能複製http://gis.stackexchange.com/questions/227719/how-to-disconnect-a-signal-when-untoggling-plugin-icon –
@FranciscoRaga - 儘管你在帖子中的答案與作品鏈接,但這個新問題是問***爲什麼***可以在'if'語句中連接,但不能在'else'語句中斷開連接。 – Joseph