我写了一个 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 crontab
。 root crontab
无法找到显示,之前显示未被其他命令提及/使用。我将我的 cronjobs
转移到“正常”的 crontab
并且一切正常。
另一点是,如果您启动需要显示的命令(例如 Tkinter),它们将不起作用 @reboot
。您必须在脚本中实现一些休眠时间(约 30 秒),以便显示器有时间可用。
import time
time.sleep(30)
...
关于python - 不执行一次程序就不能运行crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202652/