【问题标题】:IDLE (Python 3.4) - Execute a script on launchIDLE (Python 3.4) - 在启动时执行脚本
【发布时间】:2016-09-25 12:17:47
【问题描述】:

上周我一直在用 python3.4(在树莓派上)创建一个简单的触摸友好的 GUI。现在我设置 python 在启动时运行我的脚本,但我遇到了问题,我无法从我的程序中打开其他程序(例如网络浏览器或计算器)。但是,如果我使用 IDLE 来执行脚本而不是终端中的标准 python 程序,那么从我的脚本中打开其他程序就可以了!我已经创建了一个在 Linux Gui 启动时运行的 .sh 文件,它在 IDLE 中打开我的脚本,但是它只打开文件而不执行它。

所以现在我的问题是:我可以创建一个 .sh 脚本,它打开 IDLE 并在 IDLE 控制台中运行一个 python 脚本(我已经在启动空闲时尝试了 exec 命令但没有结果)

现在这是我的命令,它应该执行加载的文件,但只是出于某种原因加载它:

sudo idle3 -c exec(open('/path/to/my/file.py').read())

任何帮助表示赞赏:)

【问题讨论】:

  • 我很困惑,从你的程序中运行其他程序只有在你的程序由 IDLE 运行时才能工作。这可能是路径问题,也可能是程序中的错误、树莓派上的 python,甚至是 IDLE。

标签: python linux shell raspberry-pi python-idle


【解决方案1】:

使用 Idle 的 cli 选项

您有几个选项,其中最好的一个是使用-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

然而,这些将是肮脏的选择,幸运的是我们不需要:)。

【讨论】:

  • 谢谢!这正是我所需要的! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多