Veränderung eines Bytes bemerken (event generieren?)

Plattformunabhängige GUIs mit wxWidgets.
Antworten
joh#
User
Beiträge: 139
Registriert: Freitag 6. November 2009, 13:16

Hallo,

nach dem Abarbeiten der __init__ Methode findet sich jedes wxPython-Programm
ja in der app-mainloop wieder, und wenn sich dann der Inhalt einer Benutzervariablen
ändert, ist ihm das Schnuppe.
Gibt es vielleicht ein einfaches Bsp. wo ein event generiert wird wenn sich der Inhalt
einer Variablen ändert?
(Ich lese z.B. über den Parallelport eine Temperatur ein, und wenn die zu hoch wird...)
Gruß
joh
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Hi,
joh# hat geschrieben:[...]
nach dem Abarbeiten der __init__ Methode findet sich jedes wxPython-Programm
ja in der app-mainloop wieder, und wenn sich dann der Inhalt einer Benutzervariablen
ändert, ist ihm das Schnuppe.
Gibt es vielleicht ein einfaches Bsp. wo ein event generiert wird wenn sich der Inhalt
einer Variablen ändert?
[...]
Ich verstehe dein Problem nicht so ganz. Variablen ändern sich ja nicht von selbst, sondern du hast irgendwo eine Codezeile, die diese Änderung vornimmt. Wenn deine GUI darauf reagieren soll, musst du das der GUI an dieser Stelle deines Programms irgendwie (z.B. durch einen Methodenaufruf) mitteilen. Falls dir das zu umständlich ist oder der direkte Aufruf nicht in Frage kommt *), muss deine GUI eben in regelmäßigen Abständen (z.B. mit einem wx.Timer) die entsprechenden Variablen abfragen.

Gruß
Norbert

*) wenn du z.B. mit Threads arbeitest, sollte aus dem Arbeitsthread kein direkter Aufruf einer Methode des GUI-Threads erfolgen. In diesem Fall musst du über einen threadsicheren Mechanismus die Daten zwischen den Threads austauschen.
joh#
User
Beiträge: 139
Registriert: Freitag 6. November 2009, 13:16

ntrunk hat geschrieben: Ich verstehe dein Problem nicht so ganz. Variablen ändern sich ja nicht von selbst, sondern du hast irgendwo eine Codezeile, die diese Änderung vornimmt. Wenn deine GUI darauf reagieren soll, musst du das der GUI an dieser Stelle deines Programms irgendwie (z.B. durch einen Methodenaufruf) mitteilen.
Das ist genau mein Problem, daß ich nicht weiß wo die besagte Codezeile hin soll,
in all den Bsp's sehe ich immer nur GUI-Beschreibung/Bind's/Handlerroutinen für von der
GUI generierte Ereignisse. Aber keine Chance auf ein externes Ereignis (extern angeschlos-
sene HW) zu reagieren
ntrunk hat geschrieben: *) wenn du z.B. mit Threads arbeitest, ...
das wirds wohl werden, schönes Bsp gefunden:
http://wiki.wxpython.org/LongRunningTasks
Antworten