Имя кнопки может быть определено из ActionEvent, который передается в качестве параметра. Для примера ниже я назвал кнопку btnRow4
.
Получить позицию сложнее, но это возможно, если получить XShape кнопки из DrawPage. Вот код, который иллюстрирует, как все это работает:
def rowMacro(action_event=None): ## Get the button name. if action_event: button_name = action_event.Source.Model.getName() else: button_name = '' if button_name == 'btnRow4': rowname = "4" else: rowname = "5" ## Get the button position. oDoc = XSCRIPTCONTEXT.getDocument() oSheet = oDoc.CurrentController.ActiveSheet oDrawPage = oSheet.DrawPage oShape = None for i in range(oDrawPage.Count): aShape = oDrawPage.getByIndex(i) if aShape.supportsService("com.sun.star.drawing.ControlShape"): if aShape.getControl().getName() == button_name: oShape = aShape if oShape: ypos = oShape.getPosition().Y else: ypos = "(didn't click on a button)" ## Show results. oCell = oSheet.getCellRangeByName("A" + rowname) oCell.String = "Y Position: " + str(ypos)
Обсуждение getPosition()
можно найти по адресу https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=82422 .