尝试使用python代码关闭和打开LibreOffice Impress
用覆盆子皮跑覆盆子。我想在一个触发器发生时打开一个*.odp,然后在另一个触发器发生时,关闭该文件,然后打开另一个*.odp文件。问题是:一旦LibreOffice Impress打开,它似乎不再可用于通过终端接收命令。这些命令似乎只有在我们手动关闭LibreOffice Impress之后才起作用 我们已经成功地通过终端直接发送,并通过python脚本打开特定的*.odp文件。但是,我们似乎无法关闭演示文稿以便打开另一个演示文稿 下面是一段代码。射频代码从遥控器接收尝试使用python代码关闭和打开LibreOffice Impress,python,openoffice.org,Python,Openoffice.org,用覆盆子皮跑覆盆子。我想在一个触发器发生时打开一个*.odp,然后在另一个触发器发生时,关闭该文件,然后打开另一个*.odp文件。问题是:一旦LibreOffice Impress打开,它似乎不再可用于通过终端接收命令。这些命令似乎只有在我们手动关闭LibreOffice Impress之后才起作用 我们已经成功地通过终端直接发送,并通过python脚本打开特定的*.odp文件。但是,我们似乎无法关闭演示文稿以便打开另一个演示文稿 下面是一段代码。射频代码从遥控器接收 cmd_openShowO
cmd_openShowOn = "sudo libreoffice --nologo --show /home/pi/Documents/memorable.odp"
cmd_openShowOff = "sudo libreoffice --nologo --show /home/pi/Documents/forgettable.odp"
cmd_kill = "pkill soffice.bin"
if rfdevice.rx_code_timestamp != timestamp:
timestamp = rfdevice.rx_code_timestamp
logging.info(str(rfdevice.rx_code) +
" [pulselength " + str(rfdevice.rx_pulselength) +
", protocol " + str(rfdevice.rx_proto) + "]")
if str(rfdevice.rx_code) == "87347": # receives code to trigger closing anything that might be open and opening slide show for 'memorable.odp'
print ("Laser On")
os.system(cmd_kill)
os.system(cmd_openShowOn)
if str(rfdevice.rx_code) == "87356": # receives code to trigger closing anything that might be open and opening slide show for 'forgettable.odp'
print("Laser Off")
os.system(cmd_kill)
os.system(cmd_openShowOff)
time.sleep(1)
LibreOffice Impress的任何后续响应都将被忽略,直到我们手动删除LibreOffice Impress。在上给出了各种想法。请特别注意@sup的回答中提到的d.terminate()
。各种想法见。特别注意@sup在回答中提到的d.terminate()
。