Hallo zusammen ich bin recht neu in Python,
Ich konnte etwas erstellen, dass halbwegs so laeuft wie es sollte, dennoch hab ich ein paar Probleme.
Ich will das der Pi mir an einem Display den Status von Stationen 0-24 in einem roten oder gruenen Feld ausgibt.
Alarm.jpg (26.71 KiB) Viewed 13 times
Jede Station hat einen GPIO Eingang und im Normalbetrieb ists gruen (false) und bei Stoerung ists rot (true)
Wie gesagt mein aktuelles Programm macht was es soll, aber 2 grosse Probleme hab ich noch:
1. Das Fenster laesst sich zwar auf Vollbild bringen aber meine Anwendung zoomt es nicht mit
2. Der Bildschrim flackert weiss, da er sich wohl bei jedem loop neu aufbaut
Ich moecht ausserdem noch einen Stoerungsbalken ueber den Stationen der rot aufleuchtet falls eine der Stationen eine Stoerung hat. Also im Prinzip ob einer der GPIO true ist. Kann man sicherlich einzeln abfragen aber vllt auch ueber eine Schleife oder so.
Unter den Stationen moechte ich die Fehler und Abhilfe in einem vordefinierten Text ausgeben. Es sollen etwa 5-6 auf einmal angezeigt werden in der Reihenfolge der Numerierung.
Alarm window.jpg (90.92 KiB) Viewed 13 times
Ich hab Eingang 16 nur als Beispiel ueberall drauf geschaltet und bezueglich dem grid Tuple weiss ich nicht genau was es macht. Eingentlich wollte ich damit ein statisches grid erzeugen aber ich blick es nicht.
Das Programm wird sicherlich ganz einfach und schnell machbar sein, ich hab aber glaub einige Fehler reingehauen und es falsch und kompliziert gemacht. Vielleicht kann mir ja jemand helfen, dass waere nett.
#import modules
import tkinter as tk
import time
import RPi.GPIO as GPIO
#Setup GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16,GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(15,GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
#Main loop creating red or green station fields
def check():
#Create grid
gridTuple=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29)
Main=tk.Frame(bg = "white")# width=200, height=200,
Main.grid(row=0,column=0, sticky="NSWE")
Main.columnconfigure(gridTuple,weight=1)#,pad=3
Main.rowconfigure(gridTuple,weight=1)
window=tk.Frame(Main,bg="blue")
window.grid(row =0,rowspan=4,column=0,columnspan=30,sticky="NSWE")#
#Station 24
if GPIO.input(16)==True:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=1,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 24",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=1,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 24",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 23
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=2,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 23",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=2,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 23",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 22
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=3,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 22",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=3,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 22",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 21
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=4,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 21",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=4,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 21",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 20
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=5,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 20",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=5,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 20",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 19
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=6,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 19",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=6,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 19",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 18
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=7,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 18",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=7,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 18",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 17
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=8,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 17",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=8,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 17",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 16
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=9,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 16",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=9,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 16",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 15
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=10,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 15",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=10,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 15",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 14
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=11,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 14",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=11,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 14",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 13
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=12,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 13",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=12,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 13",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 12
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=13,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 12",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=13,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 12",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 11
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=14,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 11",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=14,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 11",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 10
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=15,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 10",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=15,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 10",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 9
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=16,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 09",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=16,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 09",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 8
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=17,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 08",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=17,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 08",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 7
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=18,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 07",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=18,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 07",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 6
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=19,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 06",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=19,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 06",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 5
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=20,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 05",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=20,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 05",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 4
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=21,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 04",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=21,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 04",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 3
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=22,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 03",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=22,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 03",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 2
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=23,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 02",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=23,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 02",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 1
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=24,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 01",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=24,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 01",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Station 0
if GPIO.input(16)==False:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=25,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 00",bg="green",fg="black")
label.grid(row=6,column=2,sticky="W")
else:
frame=tk.Frame(Main,bg ="white",highlightbackground="black",highlightthickness =3)#white
frame.grid(row=6,rowspan=1,column=25,columnspan=1,sticky="N")
label=tk.Label(frame,text="S 00",bg="red",fg="black")
label.grid(row=6,column=2,sticky="W")
#Toggle fullscreen
root.after(1000, check)
class FullScreenApp(object):
def __init__(self, master, **kwargs):
self.master=master
self._geom=True
self.master.attributes("-fullscreen", True)
master.bind('<Escape>',self.toggle_geom)
#master.resizable(1,0)
def toggle_geom(self,event):
if self._geom==False:
self.master.attributes("-fullscreen", False)
self._geom=True
else:
self.master.attributes("-fullscreen", True)
self._geom=False
root = tk.Tk()
toggleDisp=FullScreenApp(root)
check() #
root.mainloop()
Alles anzeigen