Message дублируется

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

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

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

у меня в макросе от питона имеется:
ShowMessage(title_result, text_result)а выше имеется
def ShowMessage(title_result, text_result):    ctx = XSCRIPTCONTEXT.getComponentContext()    smgr = ctx.ServiceManager    toolkit = smgr.createInstanceWithContext('com.sun.star.awt.Toolkit', ctx)    parentWindow = XSCRIPTCONTEXT.getDocument().CurrentController.Frame.ContainerWindow    messagebox = toolkit.createMessageBox(        parentWindow,        0x01,               # Тип окна: info box        0x00,               # Кнопки: только ОК        title_result,       # Заголовок Message=MsgBox        text_result)        # Текст Message=MsgBox    messagebox.execute()    # execute=выполнятьсообщение появляется, я жму ОК, оно дублируется, почему? как исправить?

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

import uno
import winsound # Модуль для воспроизводства звукового сигнала

def Message_box(*args):
    ctx = uno.getComponentContext()
    smgr = ctx.ServiceManager
    toolkit = smgr.createInstanceWithContext("com.sun.star.awt.Toolkit", ctx)
    # Получаем активное окно (desktop frame)
    desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
    frame = desktop.getCurrentFrame()
    window = frame.getContainerWindow()
    # Создаём MessageBox
    msgbox = toolkit.createMessageBox(
        window,
        'infobox',      # Тип: infobox, errorbox, warningbox, querybox
        1,              # Кнопки:
                        # 1: BUTTONS_OK — только кнопка «ОК»
                        # 2: BUTTONS_OK_CANCEL — кнопки «ОК» и «Отмена»
                        # 3: BUTTONS_YES_NO — кнопки «Да» и «Нет»
                        # 4: BUTTONS_YES_NO_CANCEL — кнопки «Да», «Нет» и «Отмена»
                        # 5: BUTTONS_RETRY_CANCEL — кнопки «Повторить» и «Отмена»
                        # 6: BUTTONS_ABORT_IGNORE_RETRY — кнопки «Прервать», «Игнорировать» и «Повторить»
        title_result,   # Используем глобальную переменную для заголовка
        text_result     # Используем глобальную переменную для текста
    )
    winsound.MessageBeep(winsound.MB_OK) # Воспроизводим звуковой перед появлением кнопки
    msgbox.execute() # Метод .execute() — открывает диалоговое окно и ждёт реакции пользователя
    winsound.MessageBeep(winsound.MB_OK) # Воспроизводим звуковой сигнал после нажатия кнопки
    msgbox.dispose() # Метод .dispose() — освобождает ресурсы, использованные объектом

# Присваиваем значения переменным
title_result = 'Заголовок'
text_result = 'Привет из Python!'

# Экспортируем функцию
g_exportedScripts = (Message_box,)
проверено-НЕ дублируется...
не слабо для такого пустяка как мсгБокс))