Tkinter generování Checkbuttonu v cyklu – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tkinter generování Checkbuttonu v cyklu – Python – Fórum – Programujte.comTkinter generování Checkbuttonu v cyklu – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Dolajo0
Duch
27. 8. 2016   #1
-
0
-

 Ahoj, mám problém s nastavením Checkbuttonů vygenerovaných v cyklu defaultně na zaškrtnuto.

Níže uvedený ukázkový kód funguje přesně dle mých představ tj. všechny Checkbuttony jsou při vytvoření zaškrtnuté.

# -*- coding: utf-8 -*-
from tkinter import *
    
HlavniOkno=Tk()

Slovnik=dict()
for i in range(5):
    Slovnik[i]=IntVar()
    Slovnik[i].set(1)
    Tlacitko=Checkbutton(HlavniOkno,text="Neco",variable=Slovnik[i])
    Tlacitko.grid(row=i)

mainloop()

Problém ovšem nastane když toto generování použiji jako funkci tj.

# -*- coding: utf-8 -*-
from tkinter import *

def Funkce():

    Slovnik=dict()
    for i in range(5):
        Slovnik[i]=IntVar()
        Slovnik[i].set(1)
        Tlacitko=Checkbutton(HlavniOkno,text="Neco",variable=Slovnik[i])
        Tlacitko.grid(row=i)

    return()
    
HlavniOkno=Tk()

Funkce()

mainloop()

V tomto případě Checkbuttony ignorují nastavenou jedničku tj. jsou nezaškrtnuté.

Netušíte prosím kde dělám chybu případně jak ji odstranit ? Děkuji za jakoukoliv pomoc.

Nahlásit jako SPAM
IP: 91.231.30.–
q
~ Anonymní uživatel
219 příspěvků
27. 8. 2016   #2
-
0
-

Takhle máš ten slovník lokální pro tu funkci a na jejím konci se celý včetně obsahu zruší. Ten Checkbutton na ni nedrží referenci a v době kdy se checkbutton vytváří, tak už ta proměnná neexistuje.

Takže můžeš ten check zaškrtnout voláním Tlacitko.select(), což je celkem k ničemu, protože tě asi nakonec bude zajímat stav těch checků, takže si ty proměnné můžeš podržet v paměti. Třeba tím, že je nezahodíš, ale vrátíš ven z té funkce:

def Funkce():
    ...
    return Slovnik
    
...

slovnik = Funkce()
Nahlásit jako SPAM
IP: 213.211.51.–
Dolajo0
Duch
7. 9. 2016   #3
-
0
-

#2 q
Díky, začátečnická chyba...

Nakonec jsem to celé stejně předělal na OOP což je pro GUI opravdu vhodnější.

Nahlásit jako SPAM
IP: 81.30.243.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

FOR - proměnné v cyklu — založil Michael

Vysvětlení cyklu — založil Jarda

#define v cyklu — založil Merik

Vysvětlení cyklu for — založil Thalorn

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý