Sliders / Schieberegler


Einführung

Sliders / Schieberegler auf einem Mischpult Ein Slider oder ein, wie man in Deutsch besser sagen würde, Schieberegler ist ein Tkinter-Objekt, mit dem ein Benutzer durch Betätigung eines Schiebereglers (Slider) einen Wert setzen kann. Slider können sowohl vertikal als auch horizontal angeordnet werden. Ein Slider wird mittels der Scale-Methode erzeugt.

Ein Scale-Element erzeugt ein grafisches Objekt, dass es einem Benutzer erlaubt einen numerischen Wert durch Verschieben eines Reglers entlang einer Skala einzustellen. Der minimale und maximale Wert, der sich einstellen lässt, kann mit Parameters eingestellt werden. Außerdem kann man einen Schieberegler vertikal oder horizontal positionieren. Ebenso lässt sich die Auflösung einstellen. Ein Scale-Element ist eine Alternative zu einem Eingabe-Element, wenn man einen endlichen Wert von einem Benutzer erwartet, das heißt einen beschränkten numerischen Wert.

Ein einfaches Beispiel

from Tkinter import *

master = Tk()
w = Scale(master, from_=0, to=42)
w.pack()
w = Scale(master, from_=0, to=200, orient=HORIZONTAL)
w.pack()

mainloop()
Wenn wir dieses Skript starten, erhalten wir ein Fenster mit einem vertikalen und einem horizontalen Slider:

Horizontale und vertikale Slider

Slider-Werte abrufen

Im vorigen Beispiel haben wir gezeigt, wie man Slider erzeugen kann. Aber es ist natürlich nicht genug einen Slider zu haben, wir brauchen auch eine Möglichkeit, also eine Methode, mit der wir seinen Wert abfragen können. Dies können wir mit der get-Methode erreichen. Wir erweitern das vorige Beispiel mit einem Knopf (button), um uns die Werte anzeigen zu lassen. Wenn dieser Button gedrückt wird, werden die Werte von beiden Schiebereglern in dem Terminal ausgegeben, aus dem das Skript aufgerufen worden ist:

from Tkinter import *

def show_values():
    print (w1.get(), w2.get())

master = Tk()
w1 = Scale(master, from_=0, to=42)
w1.pack()
w2 = Scale(master, from_=0, to=200, orient=HORIZONTAL)
w2.pack()
Button(master, text='Show', command=show_values).pack()

mainloop()


Initialisieren von Slider

Ein Slider wird auf den minimalen Wert per Default initialisiert, in unserem Fall also 0. Man kann Slider auch mit einem anderen Wert initialisieren. Dazu dient die set(value)-Methode:
from Tkinter import *

def show_values():
    print (w1.get(), w2.get())

master = Tk()
w1 = Scale(master, from_=0, to=42)
w1.set(19)
w1.pack()
w2 = Scale(master, from_=0, to=200, orient=HORIZONTAL)
w2.set(23)
w2.pack()
Button(master, text='Show', command=show_values).pack()

mainloop()


Das vorige Skript erzeugt das folgende Fenster, wenn es aufgerufen wird:

Verbessertes Slider-Beispiel

tickinterval und length

Falls die Option tickinterval auf einen Wert gesetzt wird, werden die "Ticks" (Markierungen) der Skala als Vielfachen von diesem Wert eingestellt. Wir ergänzen nun ein Tick-Interval zu unserem vorigen Beispiel.

from Tkinter import *

def show_values():
    print (w1.get(), w2.get())

master = Tk()
w1 = Scale(master, from_=0, to=42, tickinterval=8)
w1.set(19)
w1.pack()
w2 = Scale(master, from_=0, to=200,tickinterval=10, orient=HORIZONTAL)
w2.set(23)
w2.pack()
Button(master, text='Show', command=show_values).pack()

mainloop()


Wenn wird dieses Programm starten, erkennen wir, dass der vertikale Slider die Werte 0, 8, 16, 24, 32, 40 aus seiner rechten Seite anzeigt. Der horizontale Slider zeigt eigentlch die Werte 0,10,20, 30, ..., aber wir können sie nicht sehen, weil sie übereinander ausgegeben werden, weil der Slider nicht lang genug ist:

Unlesbare Tick-Intervalle

Um dieses Problem zu lösen, müssen wir die Länge des horizontalen Sliders erhöhen. Wir setzen also die length-Option auf einen neuen Wert. length definiert die x-Dimension, wenn die Skala horizontal ausgerichtet ist, und die y-Dimension, wenn die Skala vertikal ausgerichtet ist. Wir brauchen nur die Definition von w2 aus unserem vorigen Beispiel wie folgt zu ändern:
w2 = Scale(master, from_=0, to=200, length=600,tickinterval=10, orient=HORIZONTAL)

Das Ergebnis sieht wie folgt aus:

Länge eines Sliders verändern