不能运行 crontab 不执行程序一次

Can't run crontab without excecuting the programm once

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

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" 直到我在 cmd 中手动执行 script.py 一次。然后 crontab 能够执行 script.py 而不会出现该错误。我该如何解决?

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

import time

time.sleep(30)

...