Python Revpimodio2 und Tkinter: rvi.mainloop() und mainloop()
Posted: 15 Apr 2021, 14:08
Hallo Zusammen,
ich möchte ein Python Programm schreiben, welches eine Variable in einem Fenster anzeigt und diese automatisch aktualisiert, nachdem ein Eingangssignal (eine Lichtschranke, reg_event RISING) erhalten wird. Das Problem ist, dass ich einmal die rvi.mainloop() und zum anderen die mainloop() für das tkinter-Fenster habe. Wenn ich das Programm starte öffnet sich kein Fenster aber das Signal wird erkannt (in Python Shell wird die Variable ausgegeben und nach jedem Flankenanstieg aufsummiert). Lasse ich "rpi.mainloop()" weg, erscheint das Fenster aber das Signal wird nicht erkannt.
Hier mein Code:
-----------------------------
import revpimodio2
from tkinter import *
x = 0
root = Tk()
root.title("Testfenster")
root.geometry("400x600")
test_label= Label(root, text=(x))
test_label.pack()
def update():
test_label["text"]=x+1
root.after(100, update)
def myevent(ioname, iovalue):
global x
x += 1
rpi=revpimodio2.RevPiModIO(autofresh=True)
rpi.io.DInBit_1.reg_event(myevent, edge=revpimodio2.RISING)
rpi.mainloop()
update()
mainloop()
-----------------------
Hat jemand eine Idee wie ich das gelöst bekomme?
Ich muss dazu sagen, dass ich kein Python bzw. generell kein Programmierer bin. Mit dem Raspberry Pi hat das funktioniert, da reicht die "GPIO.add_event_detect(1, GPIO.RISING, callback=myevent) Funktion, also ohne "rpi.mainloop()".
Liebe Grüße und Danke im Voraus!
ich möchte ein Python Programm schreiben, welches eine Variable in einem Fenster anzeigt und diese automatisch aktualisiert, nachdem ein Eingangssignal (eine Lichtschranke, reg_event RISING) erhalten wird. Das Problem ist, dass ich einmal die rvi.mainloop() und zum anderen die mainloop() für das tkinter-Fenster habe. Wenn ich das Programm starte öffnet sich kein Fenster aber das Signal wird erkannt (in Python Shell wird die Variable ausgegeben und nach jedem Flankenanstieg aufsummiert). Lasse ich "rpi.mainloop()" weg, erscheint das Fenster aber das Signal wird nicht erkannt.
Hier mein Code:
-----------------------------
import revpimodio2
from tkinter import *
x = 0
root = Tk()
root.title("Testfenster")
root.geometry("400x600")
test_label= Label(root, text=(x))
test_label.pack()
def update():
test_label["text"]=x+1
root.after(100, update)
def myevent(ioname, iovalue):
global x
x += 1
rpi=revpimodio2.RevPiModIO(autofresh=True)
rpi.io.DInBit_1.reg_event(myevent, edge=revpimodio2.RISING)
rpi.mainloop()
update()
mainloop()
-----------------------
Hat jemand eine Idee wie ich das gelöst bekomme?
Ich muss dazu sagen, dass ich kein Python bzw. generell kein Programmierer bin. Mit dem Raspberry Pi hat das funktioniert, da reicht die "GPIO.add_event_detect(1, GPIO.RISING, callback=myevent) Funktion, also ohne "rpi.mainloop()".
Liebe Grüße und Danke im Voraus!