GUI mit Skript verbinden

Fragen zu Tkinter.
Antworten
Ebbi
User
Beiträge: 3
Registriert: Dienstag 4. Dezember 2018, 11:48

Dienstag 4. Dezember 2018, 12:07

Hallo,

ich habe ein kleines Projekt mit einem Arduino und einem Py umgesetzt und hänge jetzt leider etwas. Der Arduino überträgt Messdaten per Funk an den Py (Distanz und Temperatur). Jetzt habe ich mit Hilfe von tkinter ein kleines GUI zusammengeschustert und möchte, dass das GUI mit den empfangenen Daten arbeitet.

GUI:

Code: Alles auswählen

from tkinter import *



#Create & Configure root 
root = Tk()
root.configure(bg="white")   
root.wm_minsize(width=1024,height=600)

Grid.rowconfigure(root, 0, weight=1)
Grid.columnconfigure(root, 0, weight=1)

#Create & Configure frame 
frame=Frame(root)
frame.grid(row=0, column=0, sticky=N+S+E+W)





for row_index in range(32):
     Grid.rowconfigure(frame, row_index, weight=1)
for col_index in range(4):
        Grid.columnconfigure(frame, col_index, weight=1)


        #**Platz 1
        label1 = Label(frame,text="Platz 1",bg="white", bd=1, relief = SUNKEN) 
        label1.grid(row=0, column=0, sticky=N+W+E)  

        Seriennummer1 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer1.grid(row=1,column=0,sticky=W+N)

        Belegt1=Label(frame,text="Belegt?",font = "bold")
        Belegt1.grid(row=3,column=0,sticky=N)

        if Distanz < 10:
            AntwortaufBelegt=Label(frame,text="JA",bg="green")
            AntwortaufBelegt.grid(row=4,column=0,sticky=N)
        else:
            AntwortaufBelegt=Label(frame,text="NEIN",bg="red")
            AntwortaufBelegt.grid(row=4,column=0,sticky=N)

        Bereit1=Label(frame,text="Einsatzbereit?",font = "bold")
        Bereit1.grid(row=6,column=0,sticky=N)

        if Temperatur < 25:
            AntwortaufBelegt=Label(frame,text="JA",bg="green")
            AntwortaufBelegt.grid(row=7,column=0,sticky=N)
        else:
            AntwortaufBelegt=Label(frame,text="NEIN",bg="red")
            AntwortaufBelegt.grid(row=7,column=0,sticky=N)

        #**Platz 2
        label2 = Label(frame,text="Platz 2",bg="white", bd=1, relief = SUNKEN)
        label2.grid(row=0, column=1, sticky=N+W+E)  

        Seriennummer2 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer2.grid(row=1,column=1,sticky=W+N)

        #**Platz 3
        label3 = Label(frame,text="Platz 3",bg="white", bd=1, relief = SUNKEN)
        label3.grid(row=0, column=2, sticky=N+W+E) 

        Seriennummer3 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer3.grid(row=1,column=2,sticky=W+N)

        #**Platz 4
        label4 = Label(frame,text="Platz 4",bg="white", bd=1, relief = SUNKEN)
        label4.grid(row=0, column=3, sticky=N+W+E) 

        Seriennummer4 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer4.grid(row=1,column=3,sticky=W+N)

        #**Platz 5
        label5 = Label(frame,text="Platz 5",bg="white", bd=1, relief = SUNKEN) 
        label5.grid(row=14, column=0, sticky=N+W+E)  

        Seriennummer5 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer5.grid(row=15,column=0,sticky=W+N)

        #**Platz 6
        label6 = Label(frame,text="Platz 6",bg="white", bd=1, relief = SUNKEN)
        label6.grid(row=14, column=1, sticky=N+W+E)  

        Seriennummer6 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer6.grid(row=15,column=1,sticky=W+N)

        #**Platz 7
        label7 = Label(frame,text="Platz 7",bg="white", bd=1, relief = SUNKEN)
        label7.grid(row=14, column=2, sticky=N+W+E) 

        Seriennummer7 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer7.grid(row=15,column=2,sticky=W+N)

        #**Platz 8
        label8 = Label(frame,text="Platz 8",bg="white", bd=1, relief = SUNKEN)
        label8.grid(row=14, column=3, sticky=N+W+E) 

        Seriennummer8 = Label(frame,text="Seriennummer:",anchor=W)
        Seriennummer8.grid(row=15,column=3,sticky=W+N)




root.mainloop()

Um die Daten des Arduinos auszulesen, habe ich folgendes:

Code: Alles auswählen

import time
import serial
import RPi.GPIO as GPIO

ser = serial.Serial(
    port='/dev/ttyAMA0',
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
    )
counter=0



GPIO.setmode(GPIO.BCM)
GPIO.setup(21,GPIO.OUT)
GPIO.output(21,GPIO.LOW)

Distanz,Temperatur = 0,0



while True:
    
    x=ser.readline();
    
    
    if x != b' ':
        reading = ser.readline().decode()
        if reading:
            if reading.endswith('\r\n'):
                Distanz = float(reading.strip())
            else:
                Temperatur = float(reading)
                if Temperatur < 55:
                    GPIO.output(21,GPIO.HIGH)
                else:
                    GPIO.output(21,GPIO.LOW)

Unabhängig von einander funktioniert beides. Ich würde jetzt gerne beides zusammenfügen damit das GUI sich den Messdaten anpasst. Nicht wundern, bis jetzt gibt es nur eine Messstation(Arduino) weshalb auch nur Platz 1 im GUI etwas machen soll. Danke für die Hilfe.
Antworten