Tkinter
Slider Widget
Slider neboli posuvník je objekt Tkinteru, jímž může uživatel zadat hodnotu změnou indikátoru. Posuvníky mohou být orientováné horizontálně nebo vertikálně.Posuvník se vytvoří jako instance třídy Scale. Číselná hodnota v zadaném rozsahu se nastaví posunem posuvného tlačítka. Minimální a maximální hodnoty se zadávají jako parametry, stejně jako kroky mezi jednotlivými hodnotami. Widget Scale je dobrou alternativou pro widget Entry, očekává-li se zadání číselné hodnoty od uživatelele.
Jednoduchý příklad
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()Spustíme-li tento skript, dostame okno s vertikálním a horizontálním posuvníkem:
Přístup k hodnotám posuvníku
V přechozím příkladě jsme si ukázali, jak se vytvoří posuvník. Samotný posuvník nám ale nestačí, potřebujeme způsob, jak vytěžit jeho hodnoty. Předchozí příklad rozšíříme o tlačítko Show a hodnoty posuvníku získáme metodou get(). Při stisku tlačítka Show se aktuální hodnoty vytisknou do terminálu, ze kterého skript spouštíme: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()
Počáteční hodnoty posuvníků
Nastavenou počáteční hodnotu lze korigovat metodou set().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()
Volaný skript vypadá takto:
Dobrou ukázkou (tutorialspoint) je posuvník s deklarovanou proměnnou, která umožňuje přenos hodnoty z posuvníku do popisku:
from kinter import * def sel(): selection = "Value = " + str(var.get()) label.config(text = selection) root = Tk() var = DoubleVar() scale = Scale( root, variable = var ) scale.pack(anchor=CENTER) button = Button(root, text="Get Scale Value", command=sel) button.pack(anchor=CENTER) label = Label(root) label.pack() root.mainloop()
Délka kroku
Je-li zadán parametr tickinterval (délka kroku) jistou hodnotou, potom se kroky stupnice zobrazí jako násobky této hodnoty. Přidáme jej do předchozího příkladu: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()Spustíme-li tento program, uvidíme u vertikálního posuvníku stupnici 0, 8, 16, 24, 32, 40. U horizontálního posuvníku tuto stupnici neuvidíme, prototože je posuvník příliš krátký:
Abychom tento problém vyřešili, musíme zvětšit délku horizontálního posuvníku. Uděláme to tak, že do definice posuvníku w2 přidáme parametr "length":
w2 = Scale(master, from_=0, to=200, length=600, tickinterval=10, orient=HORIZONTAL)
Výsledek vypadá takto: