我想知道如何完全删除PyQGIS中的工具栏,以便该工具栏不仅在工具栏区域中不再可见,而且也不再在“视图”菜单(“视图”>“工具栏”)下或右键单击时列出在工具栏区域。
使用
iface.mainWindow().removeToolBar(toolbar)
从主窗口工具栏区域删除工具栏非常容易。这也会将其从右键单击工具栏区域时显示的列表中删除。但是,它不会从视图/工具栏菜单中删除工具栏。
toolbar = QToolBar('Test Toolbar')
# Add to main window & to 'View' menu
iface.addToolBar(toolbar)
# Remove from main window
iface.mainWindow().removeToolBar(toolbar)
# 'Test toolbar' is still visible in 'View' menu
如何才能使工具栏不再从 UI 访问?
deleteLater()
会计划将其删除,并将其从 view -> toolbars
菜单中完全删除。请注意,此后您将无法进一步使用该工具栏,例如使用 iface.addToolBar(toolbar)
重新添加它将不起作用。
toolbar = QToolBar('Test Toolbar')
# Add to main window & to 'View' menu
iface.addToolBar(toolbar)
# Remove from main window & 'View' menu
toolbar.deleteLater()
如果有人仍在寻找这个问题的答案,并且需要删除工具栏而不破坏它,您可以从视图/工具栏菜单中删除工具栏,如下所示。
toolbarMenu = iface.mainWindow().findChild(QMenu, 'mToolbarMenu')
toolbarMenu.removeAction(toolbar.toggleViewAction())
要从工具栏区域中删除工具栏,我发现如果工具栏不被破坏,
iface.mainWindow().removeToolBar(toolbar)
不起作用。我必须调用 toolbar.hide()
和 toolbar.setParent(None)
来强制工具栏实际上从 QGIS 工具栏区域消失。