[Tutor PyCZ] Tkinter - promenny pocet widgetu

geon geon na post.cz
Sobota Únor 11 08:07:58 CET 2006


michal na kandrac.net napsal(a):
>
> Zdravim,
> jsem v Py zacatecnik a snazim se na veci prichazet sam, ale s timto si 
> nevim rady:
> Potrebuji zobrazovat/nezobrazovat urcity pocet podobnych (Entry) 
> widgetu Tkinter v zavislosti na velikosti nejake promenne. Prisel jsem 
> na reseni zalozene na tom, ze widgety budou predem definovany a jejich 
> zobrazeni bude zavisle na konstrukci if... promenna... , ale nezda se 
> mi to moc vhodne reseni. Nejde to nejak jednoduseji, elegantneji?
Pokud nevíš, kolik čeho bude, je správná chvíle na to použít seznamy 
(nebo slovníky). A to jak na vstup (kde můžeš mít třeba názvy), tak na 
výstup, kde budeš schraňovat výstupní objekty nebo řídící proměnné 
(IntVar, StringVar apod). Ve své kartotéce jsem našel něco podobného 
(dynamické použití zaškrtávátka):

# -*- coding: utf8 -*-
"""Ukazkovy priklad vyroby aplikace v Tkinter.
Musi byt ulozeno v kodovani utf8."""

from Tkinter import *

def tisk():
    print '\n','Hodnoty tlacitek'
    for tlacitko in poleVar:
        print tlacitko,"=", tlacitko.get()

hlavniOkno=Tk()
hlavniOkno.title('Aplikace v Tk')
jazykRamec=Frame(hlavniOkno)
Label(jazykRamec, text='Tvůj oblíbený jazyk').pack(side=LEFT)

seznam=['Python','C++', 'Java', 'Pascal', 'Basic']
poleVar=[]

for prvek in seznam:
    var=IntVar()
    tlacitko=Checkbutton(jazykRamec, text=prvek, variable=var)
    tlacitko.pack(side=LEFT)
    poleVar.append(var)

jazykRamec.pack(side=TOP)
tisk=Button(hlavniOkno, text='Tisk', command=tisk)
tisk.pack(ipadx=40)

mainloop()


Tak na to jukni ;-)

geon


Další informace o konferenci Tutor