слушать выделение текста

Автор Ципихович Эндрю, 13 февраля 2026, 14:17

0 Пользователи и 1 гость просматривают эту тему.

Ципихович Эндрю

в данный момент имею:
модуль для перевода формулы LaTeX в изображение его преобразует в файл, а затем файл вставляется в документ врайт:
# Создаём графический объект
graphic_obj =
так может ни к чему сохранять в файл, а сразу в объект - одним звеном меньше...

sokol92

Цитата: Ципихович Эндрю от 19 февраля 2026, 15:21так может ни к чему сохранять в файл, а сразу в объект - одним звеном меньше.
Вряд ли так получится.
Из общих соображений - для отладки часто даже полезно сохранение промежуточных результатов во временном файле. Если всё хорошо, то этот файл можно удалить при выходе из макроса.
Владимир.

Ципихович Эндрю

здравствуйте на основе одного из ответов, который проверен и является рабочим решил отследить Клик ЛКМ по изображению, код:

import uno
import unohelper
from com.sun.star.awt import XMouseClickHandler

# Глобальные переменные
ctx = uno.getComponentContext()
smgr = ctx.ServiceManager
handler = None
current_doc = None

class MouseHandler(unohelper.Base, XMouseClickHandler):
    def __init__(self, doc):
        self.doc = doc
        self.click_count = 0

    def mousePressed(self, ev):
        return False
   
    def mouseReleased(self, ev):
        # Проверяем, что нажата именно левая кнопка мыши
        if ev.Buttons == 1:  # 1 соответствует ЛКМ
            pos = ev.Pos
            graphics = self.doc.getGraphicObjects()
            count = graphics.getCount()
            clicked = False

            for i in range(count):
                graphic = graphics.getByIndex(i)
                try:
                    left = graphic.getPropertyValue("HoriOrientPosition")
                    top = graphic.getPropertyValue("VertOrientPosition")
                    width = graphic.getPropertyValue("Width")
                    height = graphic.getPropertyValue("Height")

                    # Проверяем, находится ли клик внутри границ изображения
                    if (left <= pos.X <= left + width) and (top <= pos.Y <= top + height):
                        print('Клик ЛКМ по изображению:', graphic.getPropertyValue("Name"))
                        clicked = True
                except Exception as e:
                    # Некоторые объекты могут не поддерживать все свойства
                    continue

            if not clicked:
                print('Клик не по изображению')
       
    def disposing(self, ev):
        pass
       
def start_listener(_=None):
    global handler, current_doc
    try:
        desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
        doc = desktop.getCurrentComponent()
        if not doc:
            print('Ошибка', 'Документ не найден')
            return

        controller = doc.CurrentController
        current_doc = doc # Сохраняем документ в глобальной переменной

        if handler is None:
            handler = MouseHandler(doc)
       
        controller.addMouseClickHandler(handler)
        print('Слушатель кликов активирован')
    except Exception as e:
        print('Критическая ошибка', str(e))

g_exportedScripts = (start_listener,)
потерпел фиаско, файл открываешь и он закрывается=падает, подскажите как поправить? спасибо

kompilainenn

Нейронка что ли писала скрипт?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Ципихович Эндрю

Цитата: kompilainenn от 10 апреля 2026, 18:37Нейронка что ли писала скрипт?
да, так как это ж не "чистый" питон, а смесь его с либрой, как подправить?