Найти - Пользователи
Полная версия: Пытаюсь разобраться с ООо и python. Макрос на кнопке не выполняется.
Начало » Python для новичков » Пытаюсь разобраться с ООо и python. Макрос на кнопке не выполняется.
1
helgp
Макрос написанный на питоне (Hello World ) работает если выполнять его из меню “выполнить макрос”,но если его установить на кнопку - ругается. В такой же ситуации, макрос написанный на Бэйсике - все работает.
JOHN_16
helgp
а как он гугается вы нам специально не говорите? Нет я серьезно, вот вы ни кода не выложили, ни полной описание проблемы. Как сообщество должно вас понять? Гадать?
helgp
Мне кажется, что ошибка имеет отношение к OOo, т.к. отдельно этот макрос выполнить можно и все проходит. А диагностика такая

Ошибка OpenOffice
com/sun/star/uno/RuntimeExceptionError during invoking function HWPython in module
file//CDocuments and Settings/Admin/Application Data/Open Office/4/user/Scripts/python/HelloWorld.py
(<type ‘exception.TypeError’>:HWPython() takes no arguments (1 given)
C:\Program Files\OpenOffice 4\program\pythonscript.py:866 in function invoke()

)
py.user.next
Такой проверил, он был без аргумента и не срабатывал на кнопке, выдавая ошибку. Без кнопки работал нормально. Я просто добавил arg - и на кнопке стало работать.
# HelloWorld python script for the scripting framework
 
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
#   Licensed to the Apache Software Foundation (ASF) under one or more
#   contributor license agreements. See the NOTICE file distributed
#   with this work for additional information regarding copyright
#   ownership. The ASF licenses this file to you under the Apache
#   License, Version 2.0 (the "License"); you may not use this file
#   except in compliance with the License. You may obtain a copy of
#   the License at http://www.apache.org/licenses/LICENSE-2.0 .
#
 
def HelloWorldPython(arg):
    """Prints the string 'Hello World(in Python)' into the current document"""
#get the doc from the scripting context which is made available to all scripts
    desktop = XSCRIPTCONTEXT.getDesktop()
    model = desktop.getCurrentComponent()
#check whether there's already an opened document. Otherwise, create a new one
    if not hasattr(model, "Text"):
        model = desktop.loadComponentFromURL(
            "private:factory/swriter","_blank", 0, () )
#get the XText interface
    text = model.Text
#create an XTextRange at the end of the document
    tRange = text.End
#and set the string
    tRange.String = "Hello World (in Python)"
    return None
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB