前python+Tkinterで作ったタイマーです。
使用環境はLXDE, RPi.GPIOを使っているので、rootで起動してください。
もしキヨスクのように起動するとタイマーを起動した場合、
[Raspberry Pi] LXDE起動するとき指定pythonスクリプトを起動させる方法 一文を参考してください
import Tkinter as tk
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
#GPIO #7 for Start/Stop Switch
GPIO.setup(7,GPIO.IN)
#GPIO #17 for Reset Switch
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
prev_input = 0
class FullScreenApp(object):
def __init__(self, master, **kwargs):
self.ms = 0
self.i = 0
self.isRun=0
self.willReset=0
self.isPressed=0
self.master=master
self.echo=tk.StringVar()
self.echo.set('%02d:00:' % (self.i))
pad=3
self._geom='200x200+0+0'
master.title("Timer")
master.geometry("{0}x{1}+0+0".format(
master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
master.bind('<Escape>',self.toggle_geom)
master.config(bg='black')
master.overrideredirect(True)
master.attributes('-topmost', True)
self.label = tk.Label(text='00:00', width=32, height=2,font=('Helvetica'
, '256'), fg='white', bg='black',anchor='c')
self.label.pack()
self.master.bind_all("<1>",self.print_label_slowly)
self.print_label_slowly("Hello, world!")
def toggle_geom(self,event):
geom=self.master.winfo_geometry()
print(geom,self._geom)
self.master.geometry(self._geom)
self._geom=geom
def print_label_slowly(self, message):
'''Print a label one character at a time using the event loop'''
it = GPIO.input(17)
if (it==True):
print "!"
self.ms=0
self.i=0
str='%02d:%02d.%01d' % (self.i/60, self.i%60, self.ms)
self.label.config(text=str)
input = GPIO.input(7)
if (input==False):
self.isPressed=0
if (input==True and self.isPressed==0):
self.isPressed=1
if(self.isRun==0):
self.isRun=1
else:
self.isRun=0
if self.isRun==1 :
prev_input = input
self.ms=self.ms+1
if self.ms==10 :
self.i=self.i+1
self.ms=0
str='%02d:%02d.%01d' % (self.i/60, self.i%60, self.ms)
self.label.config(text=str)
self.master.after(100, self.print_label_slowly,"")
root=tk.Tk()
app=FullScreenApp(root)
root.mainloop()
沒有留言:
張貼留言