Domanda

Sto cercando di ottenere il sample e altri codici di esempio che trovo per pyuno funziona con openoffice 3.1.1 e python 2.5 senza fortuna.

Sfortunatamente, Pyuno non fornisce alcun indizio su cosa vada storto.

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

sotto è l'output dell'esecuzione di /opt/openoffice.org/basis3.1/program/officehelper.py che fondamentalmente avvia l'istanza dell'ufficio senza testa e restituisce un oggetto di contesto correlato.

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 accetta solo 1 argomento e deve essere una stringa, come definito in http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup non sono riuscito a far funzionare comunque pyuno.getClass.

qualche suggerimento su come far funzionare pyuno?

È stato utile?

Soluzione

In [1]: import uno In [2]: local = uno.getComponentContext () In [3]: resolver = local.ServiceManager.createInstanceWithContext (" com.sun.star.bridge.UnoUrlResolver " ;, local)

OOP è andato storto, imho. conosco il suo OT, ma prima ho provato a far funzionare uno e ho rinunciato. questo è puro Steve Yegge Prose (leggi su http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html ).

quando traduci quelle linee in una forma più parlabile, escono approssimativamente come:

" Consenti a "local" di essere il risultato del metodo di chiamata "get context context" di "uno". Consenti al "gestore servizi" di essere l'attributo "gestore servizi" di "locale". Consenti a "resolver" di essere il risultato della chiamata del metodo "service manager" "crea istanza con contesto", usando gli argomenti "com sun star bridge uno url resolver" e "local". & Quot;

omg. non sorprende che qualcosa non vada in un programma così atrocemente troppo specifico, contorto e autoreferenziale pur non essendo autocosciente ... tu chiami un sotto-metodo di "locale" e quel sotto-metodo deve essere detto cosa significa "locale"? che cosa? un cappello agli sviluppatori senza paura che possono tagliare questo. buon debug.

AGGIUNTO:

grazie per commento e punti.

il problema pyuno in realtà non posso fare nulla, ma incoraggio a perseguire un approccio terapeutico paziente con una scadenza chiara.

suggerisco anche di presentare un B.U.G. con le persone pyuno (se sono effettivamente attive & # 8212; ho avuto l'impressione che si trattasse di un progetto piuttosto silenzioso) a causa del messaggio di errore senza senso: il metodo in questione sembra richiedere un argomento stringa e ne ottiene uno, e si lamenta di averlo fatto. questo non è quindi utile nella misura in cui diventa ragionevole dichiarare un errore di codice.

in questo tipo di situazione guardo spesso alle fonti. ma l'hai già fatto, vero?

Odio le persone a cui chiedere & # 8216; perché vuoi farlo? & # 8217; quando chiedo aiuto. tuttavia, a volte qualcuno (forse tu) trova un altro percorso praticabile nel processo, uno che non include una soluzione al problema particolare, ma aiuta a risolvere quello principale. quindi, se posso chiederti: qual è il quadro generale?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top