Sim*_*oux 2 python cron tkinter raspberry-pi
我有一个简单的 GUI(使用 tkinter 创建),我想在一天中的特定时间在 Raspberry pi 3 上运行它。下面是我在 crontab 中使用的代码片段。我使用 sudo crontab -e 调用 crontab 管理器。
0 18 * * * cd /home/pi/gui && python3 gui.py
Run Code Online (Sandbox Code Playgroud)
目前,我可以通过 Pi 的命令行直接调用 GUI 来执行它。但是,当我尝试使用 cron 来执行此操作时,它不起作用。我还尝试切换到基本的 python 脚本(写入文件)并且成功了。是否有我需要注意的特定奇怪交互?
我的设置:raspberry pi 3、python 3、raspi-screen、tkinter(据我所知最新版本)
sudo 将在没有 tty 的情况下运行并显示,这就是您的命令不起作用的原因。
尝试安装 xvfb 并使用
0 18 * * * cd /home/pi/gui && xvfb-run python3 gui.py
Run Code Online (Sandbox Code Playgroud)
更新 1:2018 年 6 月 22 日
如果您想使用实际显示,那么您需要确保使用以下命令
XAUTHORITY=/home/<user>/.Xauthority DISPLAY=:0 python3 gui.py
Run Code Online (Sandbox Code Playgroud)
并且还要确保 cron 适合您的用户。默认DISPLAY
为:0
.
当您有 XServer(GUI 显示)时,您不能在未经授权的情况下连接到它。当系统启动时,它会创建一个文件,并且该位置存储在环境变量 XAUTHORITY 中。
当您运行 cron 时,您的环境变量是有限的。没有现有的XAUTHORITY
或DISPLAY
已定义的能够连接到您需要的显示。因此,您需要定义程序所需的每个环境变量
所以你定义DISPLAY=:0
选择默认显示器,你需要设置XAUTHORITY=/home/<user>/.Xauthority
证明你有权连接到显示器
归档时间: |
|
查看次数: |
3847 次 |
最近记录: |