Форум сайта python.su
0
Макрос написанный на питоне (Hello World
) работает если выполнять его из меню “выполнить макрос”,но если его установить на кнопку - ругается. В такой же ситуации, макрос написанный на Бэйсике - все работает.
Офлайн
221
helgp
а как он гугается вы нам специально не говорите? Нет я серьезно, вот вы ни кода не выложили, ни полной описание проблемы. Как сообщество должно вас понять? Гадать?
Офлайн
0
Мне кажется, что ошибка имеет отношение к OOo, т.к. отдельно этот макрос выполнить можно и все проходит. А диагностика такая
Ошибка OpenOffice
com/sun/star/uno/RuntimeExceptionError during invoking function HWPython in module
file
//C
Documents 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()
)
Офлайн
857
Такой проверил, он был без аргумента и не срабатывал на кнопке, выдавая ошибку. Без кнопки работал нормально. Я просто добавил 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
Отредактировано py.user.next (Март 30, 2016 02:43:49)
Офлайн