Moderator: RevPiModIO

 
Maxim3
Topic Author
Posts: 2
Joined: 15 Apr 2021, 13:39

Python Revpimodio2 und Tkinter: rvi.mainloop() und mainloop()

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!
 
User avatar
RevPiModIO
Posts: 249
Joined: 20 Jan 2017, 08:44
Contact:

Re: Python Revpimodio2 und Tkinter: rvi.mainloop() und mainloop()

18 Apr 2021, 10:06

Hi Maxim3!

Versuche mal bei deinem "rpi.mainloop()" noch den Parameter "blocking=False" anzugeben "rpi.mainloop(blocking=False)", dann läuft das Eventsystem im Hintergrund.

Am Ende von deinem Code, also nach dem mainloop von TK-Inter auf jeden Fall noch ein "rpi.exit()" einsetzen. Damit wird das Eventsystem beendet und alle IOs synchronisiert, bevor das Programm am Ende ist ;)

Gruß
Sven
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
 
Maxim3
Topic Author
Posts: 2
Joined: 15 Apr 2021, 13:39

Re: Python Revpimodio2 und Tkinter: rvi.mainloop() und mainloop()

19 Apr 2021, 11:25

Hallo Sven,

danke für die schnelle Antwort!

Das hat geholfen, es funktioniert. :)

Who is online

Users browsing this forum: No registered users and 2 guests