Вопрос

Я пытаюсь получить образец и другие примеры кодов, которые я нахожу для pyuno, работающие с openoffice 3.1.1 и python 2.5, безуспешно.

К сожалению, пьюно не дает никаких подсказок о том, что идет не так.

In [1]: import uno
In [2]: local = uno.getComponentContext()
In [3]: resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
---------------------------------------------------------------------------
com.sun.star.uno.RuntimeException         Traceback (most recent call last)

/opt/openoffice.org/basis3.1/program/ in ()

com.sun.star.uno.RuntimeException: : 'tuple' object has no attribute 'getTypes', traceback follows
no traceback available

ниже приведен результат выполнения /opt/openoffice.org/basis3.1/program/officehelper.py , который в основном загружает экземпляр office без головы и возвращает связанный контекстный объект.

den@ev:/opt/openoffice.org/basis3.1/program > python officehelper.py
Traceback (most recent call last):
  File "officehelper.py", line 42, in 
    from com.sun.star.connection import NoConnectException
  File "uno.py", line 273, in _uno_import
    RuntimeException = pyuno.getClass( "com.sun.star.uno.RuntimeException" )
RuntimeError: pyuno.getClass: expecting one string argument

pyuno принимает только 1 аргумент, и это должна быть строка, как определено в http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup мне все равно не удалось заставить pyuno.getClass работать.

есть какие-нибудь предложения о том, как заставить pyuno работать?

Это было полезно?

Решение

В [1]:импортируйте uno В [2]:local = uno.getComponentContext() В [3]:распознаватель = локальный.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", локальный)

ООП пошло не так, имхо.я знаю, что это не так, но я уже пытался заставить uno работать раньше и сдался.это чистая проза Стива Йегге (читайте дальше http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html).

когда вы переводите эти строки в более понятную форму, они звучат примерно так:

"Пусть "local" будет результатом вызова метода "get component context" из "uno".Пусть 'service manager' является атрибутом 'service manager' для 'local'.Пусть "распознаватель" будет результатом вызова метода "service manager" "создать экземпляр с контекстом", используя аргументы "com sun star bridge uno url resolver" и "local"."

боже мой.неудивительно, что что-то не так с программой, которая настолько чудовищно сверхспецифична, запутанна и ориентирована на себя, хотя и не осознает себя...вы вызываете подметод "local", и этому подметоду нужно сообщить, что означает "local"?что сказать?снимаю шляпу перед бесстрашными разработчиками, которые могут справиться с этим.счастливой отладки.

ДОБАВЛЕНО:

спасибо за комментарии и замечания.

проблема пьюно, с которой я фактически ничего не могу поделать, но я призываю придерживаться терпеливого подхода к пробам с четкими сроками.

я также предлагаю подать прямой иск против B.U.G.с людьми из pyuno (если они на самом деле активны — у меня сложилось впечатление, что это был довольно тихий проект) из-за бессмысленного сообщения об ошибке:рассматриваемый метод, по-видимому, запрашивает один строковый аргумент, и он получает его, и он жалуется, что это сделал.это настолько бесполезно, что становится разумным объявлять ошибку кода.

в подобных ситуациях я часто заглядываю в источники.но ты ведь уже сделал это, верно?

я ненавижу, когда люди спрашивают в ответ: "Почему ты хочешь это сделать?", когда я прошу о помощи.однако иногда кто-то (возможно, вы) предлагает другой приемлемый путь в процессе, тот, который не включает в себя решение конкретной проблемы, но помогает решить вышестоящую.итак, если я могу спросить:какова общая картина?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top