0

私はこれについて何時間も頭を悩ませてきましたが、これを機能させる方法を知るのに十分なほどLibreOfficeマクロAPIを理解していません:

1) このスクリプトは Python で動作します:

#!/usr/bin/env python3
import subprocess 
def play_vlc(path="/path/to/video.avi"):
    subprocess.call(['vlc', path])
    return None
play_vlc("/path/to/video.avi")

2) LibreOffice Base で正常に動作する Python スクリプトがあり、このスクリプトはボタンを押すと実行されます。ビデオが開きます (エラーあり - 以下を参照)

では、"path" というラベルの付いた特定のレコードのフィールドで見つかったパスを開くにはどうすればよいでしょうか?つまり、python に渡されるものと、関連する情報を取得するにはどうすればよいでしょうか?

さらに、これを起動するたびにビデオが再生されますが、次のようにも表示されます。

com.sun.star.uno.RuntimeExceptionError during invoking function play_vlc in module file:///usr/lib/libreoffice/share/Scripts/python/vlc.py (<class 'TypeError'>: Can't convert 'com.sun.star.lang.EventObject' object to str implicitly
  /usr/lib/python3.5/subprocess.py:1480 in function _execute_child() [restore_signals, start_new_session, preexec_fn)]
  /usr/lib/python3.5/subprocess.py:947 in function __init__() [restore_signals, start_new_session)]
  /usr/lib/python3.5/subprocess.py:557 in function call() [with Popen(*popenargs, **kwargs) as p:]
  /usr/lib/libreoffice/share/Scripts/python/vlc.py:8 in function play_vlc() [subprocess.call(['vlc', path])]
  /usr/lib/libreoffice/program/pythonscript.py:870 in function invoke() [ret = self.func( *args )]
)

助けてください!

4

1 に答える 1

1

たとえば、フォームが という列を含むテーブルに基づいているとしますPATH。ボタンのExecute actionイベントをこの関数に割り当てます。

def playvlc_button_pressed(oEvent):
    oForm = oEvent.Source.getModel().getParent()
    lNameCol = oForm.findColumn('PATH')
    sPath = oForm.getString(lNameCol)
    play_vlc(sPath)

ベース マクロのドキュメントはわかりにくいですが、 http ://www.pitonyak.org/database/ にいくつかあり ます。

于 2016-07-11T18:17:32.480 に答える