Instructions
87
10.3.1 So funktioniert es
Die Initialisierung der Bibliotheken und GPIO-Ports sowie die Definition der Liste für die drei Blinkmuster
entsprechen dem vorangegangenen Programm. Die Festlegung der Variablen
t für die Blinkzeit fällt weg, da
diese später aus dem Schieberegler ausgelesen wird.
g = IntVar(); g.set(5) Zusätzlich zur Tk-Variablen v, in der das ausgewählte Blinkmuster gespeichert
wird, wird eine weitere Integervariable
g für die Geschwindigkeit deklariert. Diese erhält einen Startwert von
5, der dem Mittelwert des Schiebereglers entspricht.
def LedEin():
e = v.get(); t = 1.0/g.get()
Die Funktion, die die LEDs blinken lässt, entspricht ebenfalls dem vorherigen Beispiel, jedoch mit einem
Unterschied. Die Variable
t für die Blinkdauer wird aus dem Wert des Schiebereglers g ermittelt.
Da ein Benutzer intuitiv ein schnelleres Blinken mit einer höheren Geschwindigkeit verbindet, wird der
Schieberegler nach rechts größere Werte zurückliefern. Im Programm wird aber für eine höhere Geschwin-
digkeit eine kürzere Wartezeit, also ein kleinerer Wert benötigt. Dies wird durch eine Kehrwertberechnung
erreicht, die aus den Werten
1 bis 10 des Schiebereglers die Werte 1.0 bis 0.1 für die Variable t ermittelt. In
der Formel muss
1.0 und nicht 1 stehen, damit das Ergebnis eine Fließkommazahl und keine Ganzzahl
wird.
Ganzzahlen in Fließkommawerte umrechnen
Das Ergebnis einer Berechnung wird automatisch als Fließkommazahl gespeichert, wenn mindestens
einer der Werte in der Formel eine Fließkommazahl ist. Sind alle Werte in der Formel Ganzzahlen (Inte-
ger), wird das Ergebnis ebenfalls auf eine Ganzzahl gekürzt.
Die Definition des Labels und der Radiobuttons im Dialogfeld werden aus dem vorhergehenden Beispiel
übernommen.
Label(root,
text="Geschwindigkeit").pack()
Zur Erklärung des Schiebereglers wird ein weiteres Label in das Dialogfeld geschrieben. Da dieses keine
Parameter in der
pack() Methode enthält, wird es horizontal zentriert unterhalb der Radiobuttons eingebaut.
Scale(root, orient=HORIZONTAL, from_ = 1, to = 10, variable = g).pack()