2016-07-11 1 views
0

Я часами напугала свою голову, и я не понимаю макросов LibreOffice достаточно хорошо, чтобы знать, как сделать эту работу:Простой скрипт python, чтобы получить базовое поле libreoffice и играть на vlc

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, и как мне тянуть что соответствующий бит информации?

Кроме того, всякий раз, когда я огонь этого видео играет, но я также получаю:

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)] 
) 

Пожалуйста, помогите!

+0

кажется, что ваш 'path' не содержит строку, но' com.sun.star.lang.EventObject'. Как насчет отправки кода, где происходит ошибка? Проводка кода, который работает, не очень полезен для отладки. –

+0

hi rawling - это код именно так, как он появляется. что-то передается функции (я думаю), что вызывает эту ошибку - по иронии судьбы, я подозреваю, что это информация, которую мне нужно, чтобы получить путь, который я хочу, но я не могу быть уверен ... – Trees4theForest

ответ

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/

+0

+1 для документации смущаясь ... Я был в этом несколько недель и до сих пор не могу найти «вот как вы получаете элемент x из формы y» в любой ситуации. Все предполагает, что вы волшебным образом знаете этот материал ... – Trees4theForest

 Смежные вопросы

  • Нет связанных вопросов^_^