【发布时间】:2017-03-08 09:54:27
【问题描述】:
我正在为 GIS 软件 QGIS 开发一个插件。我有一个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(),但这会断开所有信号,因此不符合我的兴趣。
【问题讨论】:
-
@FranciscoRaga - 虽然您链接到的帖子中的答案有效,但这个新问题是问为什么可以在@987654326 中连接@ 语句但不能在
else语句中断开。