无法在不执行一次程序的情况下运行crontab

时间:2016-08-29 09:21:29

标签: python tkinter crontab 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",直到我在cmd中执行script.py一次手册。然后crontab能够执行script.py而不会出现该错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

import time

time.sleep(30)

...