使用cronTab运行tkinter图形用户界面

人气:645 发布:2022-10-16 标签: python raspberry-pi tkinter cron

问题描述

我有一个简单的图形用户界面(使用tkinter创建),我想在一天中的特定时间在Raspberry pi 3上运行它。下面是我在crontab中使用的代码片段。我使用sudo crontabb-e调用了crontabb管理器。

0 18 * * * cd /home/pi/gui && python3 gui.py
目前,我可以通过PI的命令行直接调用该图形用户界面来执行它。但是,当我尝试使用cron执行此操作时,它不起作用。我还尝试切换到基本的python脚本(写入文件),并成功了。是否有特定的奇怪交互需要我注意?

我的设置:raspberry pi 3,python3,raspi-creen,tkinter(据我所知的最新版本)

推荐答案

sudo将在没有tty的情况下运行并显示,这就是您的命令不起作用的原因。

尝试安装xvfb并使用

0 18 * * * cd /home/pi/gui && xvfb-run python3 gui.py

更新-1:22-6-18

如果要使用实际显示,则需要确保使用以下命令

XAUTHORITY=/home/<user>/.Xauthority DISPLAY=:0 python3 gui.py

,还要确保cron是为您的用户使用的。默认DISPLAY:0

当您有一个XServer(图形用户界面显示)时,您不能未经授权就直接连接到它。当系统启动时,它创建一个文件,该位置存储在环境变量XAUTHORITY中。

运行cron时,您的环境变量有限。没有定义现有的XAUTHORITYDISPLAY 为了能够连接到您需要的显示器。因此,您需要定义程序所需的每个环境变量

因此您定义DISPLAY=:0以选择默认显示,并且您需要设置XAUTHORITY=/home/<user>/.Xauthority以证明您有权连接到该显示

766