Hi Luke,
It works with setDisabled on action_item.
Be careful not to call setDisabled on every action of a category, then
yes, it disables the entire icon.
Updated snippet for example:
actions_list = []
sdtb = iface.shapeDigitizeToolBar()
for i, action_widget_item in enumerate(sdtb.actions()):
if action_widget_item.defaultWidget().menu() is None:
actions_list.append(action_widget_item.defaultWidget().defaultAction())
continue
actions_list += action_widget_item.defaultWidget().menu().actions()
actions_ids = ['rectangle-from-extent', 'circle-from-3-points'] #
actions ids to disable
[a.setDisabled(True) for a in actions_list if a.data() in actions_ids]
# disable the actions
Jacky Volpes
Ingénieur SIG - Oslandia
Le 05/03/2024 à 19:32, Catania, Luke A ERDC-RDE-GRL-VA CIV a écrit :
When I use setDisabled on either action_widget_item.defaultWidget or
action_item it sets the disables the entire icon as opposed to the
specific action item found. Maybe I am missing something. Like I
don’t want the user to be able to draw an Ellipse from Foci so I
disable that, but it disables the entire icon of menus for drawing
Elipses.
*From:* Jacky Volpes <jacky.vol...@oslandia.com>
*Sent:* Tuesday, February 27, 2024 5:29 AM
*To:* Catania, Luke A ERDC-RDE-GRL-VA CIV
<luke.a.cata...@erdc.dren.mil>; qgis-developer@lists.osgeo.org
*Subject:* Re: [QGIS-Developer] Access to shapeDigitizeToolBar menu's text
Hi Luke,
As you can see on the printed text, objects are QWigetAction, not QAction.
This is because you get each category of the tool bar, where then each
one contains one or more digitizing QActions.
Here is a snippet that can help you explore the tool bar:
sdtb = iface.shapeDigitizeToolBar()
for i, action_widget_item in enumerate(sdtb.actions()):
print(f"{i}: {action_widget_item.defaultWidget().text()}")
for j, action_item in
enumerate(action_widget_item.defaultWidget().menu().actions()):
print (f"\t{j}: {action_item.data()}") # id like
print (f"\t\ttranslated text: {action_item.text()}")
Regards,
Jacky Volpes
Ingénieur SIG - Oslandia
Le 27/02/2024 à 04:10, Catania, Luke A ERDC-RDE-GRL-VA CIV via
QGIS-Developer a écrit :
Trying to get access to the button menus in shapeDigitizeToolBar.
from qgis.utils import iface
from PyQt5.QtWidgets import QWidgetAction
sdtb = iface.shapeDigitizeToolBar()
i=0
for action_item in sdtb.actions():
i=i+1
print (f"{i}: {action_item}")
This prints:
1: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242801E98B0>
2: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E43F70>
3: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E590D0>
4: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E9E1F0>
5: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E274C0>
I want to access each button and the menus of the button so I can
disable certain tools. I need to get the text associated with the
tools so I can key on that.
I can’t figure out how to get to them from QWidgetAction. I called
all the methods on QAction that returns a string: data, iconText,
statusTip, whatsThis and they all return empty strings. So how
are these menus labeled.
Thanks,
Luke
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info:Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked
<Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked>
Unsubscribe:Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked
<Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked>
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer