我写了一个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
而不会出现该错误。我该如何解决这个问题?
答案 0 :(得分:1)
终于解决了我的问题。一切都很好,但我正在使用root crontab
。在另一个命令未提及/使用显示之前,root crontab
无法找到显示。我将cronjobs
转移到"正常" crontab
,一切正常。
另一点是,如果启动它们@reboot
,则需要显示的命令(例如Tkinter)不起作用。你必须在你的脚本中实现一些休眠时间(~30秒),这样显示器就有时间可用。
import time
time.sleep(30)
...