我花了大约一个星期左右在python3.4中创建了一个简单的触摸友好GUI(在raspberry pi上)。现在我设置python在启动时运行我的脚本,但我遇到了问题,我无法从我的程序中打开其他程序(例如Web浏览器或计算器)。但是,如果我使用IDLE来执行脚本而不是终端中的标准python程序,那么从我的脚本中打开其他程序就可以了!我已经创建了一个在Linux Gui启动时运行的.sh文件,它在IDLE中打开我的脚本,但它只打开文件而不执行它。
所以现在我的问题是:我可以创建一个.sh脚本,它打开IDLE并在IDLE控制台中运行一个python脚本(我在启动空闲时尝试了exec命令而没有结果)
现在这是我的命令,它应该执行加载的文件,但只加载一些reaseon:
sudo idle3 -c exec(open('/path/to/my/file.py').read())
感谢任何帮助:)
答案 0 :(得分:0)
您有几个选项,其中最好的选项是使用-r
选项。来自man idle
:
-r file
Run script from file.
但是这只会打开解释器窗口。由于您还需要编辑器,因此这将完全按照您的描述进行操作:
idle3 '/path.to/file.py' & idle3 -r '/path.to/file.py'
您需要的启动命令是:
/bin/bash -c "idle3 '/path/to/file.py' & idle3 -r '/path/to/file.py'"
您尝试的命令无效,因为here,我们可以阅读:
只有进程0可以调用idle()。任何用户进程,甚至是具有超级用户权限的进程,都将收到EPERM。
因此,我们依赖idle
的cli选项,幸运的是提供了一个选项:)
另一种选择是用idle3
打开文件,等待窗口出现并模拟 F5 :
/bin/bash -c "idle3 '/path/to/file.py' & sleep 3 && xdotool key F5"
这需要在您的系统上安装xdotool。
此包装器的高级版本将使用idle
打开文件,随后检查新窗口是否存在,是否聚焦并使用xdotool
模拟 F5 。
然而,这些将是肮脏的选择,我们很幸运不需要:)。