python - 不执行一次程序就不能运行crontab

标签 python tkinter cron raspberry-pi3

我写了一个 script.py 应该在树莓派上打开一个 Tkinter 窗口:

from Tkinter import *
import turtle
import math
import time
import sys
import os

root = Tk()
root.config(cursor="none")
ccanvas = Canvas(root, width = 800, height = 480)
root.overrideredirect(1) 
turtle_screen = turtle.TurtleScreen(ccanvas)
ccanvas.pack()
turtle = turtle.RawTurtle(turtle_screen)
turtle.hideturtle()
mainloop()

我可以从命令行运行脚本:

python /home/pi/script.py

当我首先尝试通过 crontab 运行它时,找不到显示。我用以下方法解决了这个问题:

DISPLAY=:0 python /home/pi/script.py

但现在我收到以下错误:_tkinter.TclError: couldn't connect to display ":0" until I execute the script.py命令。然后 crontab 能够执行 script.py 而不会出现该错误。我该如何解决?

最佳答案

终于解决了我的问题。一切都很好,但我使用的是 root crontabroot crontab 无法找到显示,之前显示未被其他命令提及/使用。我将我的 cronjobs 转移到“正常”的 crontab 并且一切正常。 另一点是,如果您启动需要显示的命令(例如 Tkinter),它们将不起作用 @reboot。您必须在脚本中实现一些休眠时间(约 30 秒),以便显示器有时间可用。

import time

time.sleep(30)

...

关于python - 不执行一次程序就不能运行crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202652/

相关文章:

bash - Crontab - 从 ~/.bashrc 传递环境变量

python - Python 中的时间复杂度 - 大 O 表示法

python - 在 Python 中使用 lambda 表达式过滤元组列表

python - 如何定位图像中亮点的中心?

python - 在 to_csv 命令中选择 index=False 选项时,Excel 不打开 csv 文件

python - 如何使用 tkinter 创建菜单栏?

python - 快速 Tkinter 格式化问题

python - 如何进行 ttk.Combobox 回调

mysql bash shell脚本输出错误

linux - Cron Job 在 Linux 环境下不工作