Python Libre office Uno: создание экземпляра com.sun.star.drawing.LineStyle.SOLID? - PullRequest
0 голосов
/ 15 января 2019

Используя LibreOffice 6.0.7.3 00m0 (сборка 3) в Ubuntu 18.04, вы хотите иметь макрос Python в LibreOffice Draw:

import uno
import unohelper
#import com.sun.star.drawing #No module named 'com'
#from com.sun.star.lang import XServiceName # passes
#from com.sun.star.drawing import LineStyle # : No module named 'com' (or 'com.sun.star.drawing.LineStyle' is unknown)
#from com.sun.star import drawing # No module named 'com' (or 'com.sun.star.drawing' is unknown)

def myfunc():
  ...
  oCtx = uno.getComponentContext()
  oServiceManager = oCtx.ServiceManager

  oDoc = XSCRIPTCONTEXT.getDocument()
  oSlideList = oDoc.getDrawPages()
  ...

  #drawObject.LineStyle = com.sun.star.drawing.LineStyle.SOLID # name 'com' is not defined
  #drawObject.LineStyle = uno.createUnoStruct("com.sun.star.drawing.LineStyle.SOLID") # pyuno.getClass: uno exception com.sun.star.drawing.LineStyle.SOLID is unknown
  #drawObject.LineStyle = uno.createUnoStruct("com.sun.star.drawing.LineStyle") # pyuno.getClass: com.sun.star.drawing.LineStyleis a ENUM, expected EXCEPTION, STRUCT or INTERFACE
  #drawObject.LineStyle = oServiceManager.createInstance('com.sun.star.drawing.LineStyle') # TYPE is not supported!
  drawObject.LineStyle = oServiceManager.createInstance('com.sun.star.drawing.LineStyle.SOLID') # TYPE is not supported!

... но я просто не могу создать экземпляр com.sun.star.drawing.LineStyle.SOLID. Как я могу создать его экземпляр в макросе Python?

1 Ответ

0 голосов
/ 15 января 2019

Нашел, вот: https://docs.libreoffice.org/librelogo/html/LibreLogo_8py_source.html:

from com.sun.star.drawing.LineStyle import SOLID # passes

def myfunc():
  ...
  drawObject.LineStyle = SOLID
...