我有一个简单的 GUI(使用 tkinter 创建),我想在一天中的特定时间在 Raspberry pi 3 上运行它。下面是我在 crontab 中使用的代码片段。我使用 sudo crontab -e 调用 crontab 管理器。
0 18 * * * cd /home/pi/gui && python3 gui.py
目前,我可以通过 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
更新 1:2018 年 6 月 22 日
如果您想使用实际的显示,那么您需要确保使用以下命令
XAUTHORITY=/home/<user>/.Xauthority DISPLAY=:0 python3 gui.py
还要确保 cron 适合您的用户。默认DISPLAY
是 :0
。
当您有 XServer(GUI 显示)时,您不能在未经授权的情况下连接到它。当系统启动时,它会创建一个文件,并且该位置存储在环境变量 XAUTHORITY 中。
当您运行 cron 时,您的环境变量是有限的。没有现有XAUTHORITY
或DISPLAY
定义的
能够连接到您需要的显示器。因此,您需要定义程序所需的每个环境变量
所以你定义DISPLAY=:0
选择默认显示,需要设置XAUTHORITY=/home/<user>/.Xauthority
证明您有权连接到显示器
关于python - 使用 crontab 运行 tkinter GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801120/