Tkinter - zatlačítkován do konce – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tkinter - zatlačítkován do konce – Python – Fórum – Programujte.comTkinter - zatlačítkován do konce – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
VitPet0
Newbie
3. 6. 2014   #1
-
0
-

 Ahoj,

chtěl bych udělat aplikaci s Tkinrem ale vždy když pužiji jakékoliv tlačítko nebo jakýkoliv spůsob (a že jich JE! ...ironie...) tak mi vyjde vždy podobný výsledek

import Tkinter as tki 
vlasy=tki.StringVar()

vlasecky=tki.Checkbutton(volby, text="vlasy", variable=vlasy, onvalue="ano", offvalue="ne")
vlasecky.pack(side=LEFT) 

print vlasy   ...vyjde mi PY_VAR0 ale mělo by to být ano.


if vlasy == "PY_VAR0":
	print "spravne!"
	
else:
	print "chyba!"  ...ale vzdy mi vyjde chyba!

kód jsem trochu poupravil aby mi to nevykreslovalo smilleka ale pouze skoselo funkcnost ale co to??

ne jen ze nefunguje ale chová se velice divně ne? místo ano nebo ne odpovídá jakýmsi PY_VAR0 (nebo  1 podle políčka na zaškrtnutí)  jak to vyřešit? jde to vůbec?

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
z
~ Anonymní uživatel
268 příspěvků
4. 6. 2014   #2
-
0
-

   

if vlasy.get() == "ano"
Nahlásit jako SPAM
IP: 88.101.8.–
VitPet0
Newbie
11. 6. 2014   #3
-
0
-

Bohužel stále nefunguje program jsem upravil takto:

import Tkinter as tki
 
vlasy=tki.StringVar()

vlasecky=tki.Checkbutton(volby, text="vlasy", variable=vlasy, onvalue="ano", offvalue="ne")
vlasecky.pack(side=LEFT) 



if vlasy.get() == "ano":
	print "ano!"
else:
	print "chyba"

ale stehně píše chybu!

Nahlásit jako SPAM
IP: 90.176.141.–
Hmmmmmm... Sooooooo Python
VitPet0
Newbie
11. 6. 2014   #4
-
0
-

#3 VitPet
no, po chvíly skoumání jsem přišel na tohle: 

import Tkinter as tki
 
vlasy=tki.StringVar()

vlasecky=tki.Checkbutton(volby, text="vlasy", variable=vlasy, onvalue="ano", offvalue="ne")
vlasecky.pack(side=LEFT) 



if vlasy.get() == "":
	print "ano!"
else:
	print "chyba"

ano sice mi odepíše ano ale taky bych potřeboval aby odepisoval něco i na ne(pro ano stačí "" ale co pro ne?), a ješte jedna věc  protože políčko je předem zaškrtnuté a odškrtnu ho, nic se nestane (ano, mám tam mainloop!), nemělo by to pod ano napsat chyba?

Nahlásit jako SPAM
IP: 90.176.141.–
Hmmmmmm... Sooooooo Python
z
~ Anonymní uživatel
268 příspěvků
12. 6. 2014   #5
-
0
-

Nechápu. Ta StringVar buď zůstane prázdná, nebo v ní bude hodnota checku. Pokud ji předem nastavíš na platnou hodnotu, tak by tam mělo být jen "ano" nebo "ne". Proč by to pod ano psalo chyba? Buď jedno, nebo druhé...

vlasy=tki.StringVar()
vlasy.set("ano");

...
Nahlásit jako SPAM
IP: 78.156.159.–
VitPet0
Newbie
12. 6. 2014   #6
-
0
-

#5 z
Hmm nechápu jak to myslíš. Nesnáším když někdo vytrhne část programu, upraví jí tak aby dávala symsl... no ale dobře: 

from Tkinter import *
import Tkinter as tki

def oci_modre():
	oci="modre"				
		
def oci_zelene():
	oci="zelene"
		
def oci_hnede():
	oci="hnede"

volby=Tk()

nadpis=Label(volby,text="SmileCreator v.02")
nadpis.pack()

desighn1=Frame(volby)
desighn1.pack()

ocka=Label(desighn1,text="oci: ")
ocka.pack(side=LEFT)

modre=Button(desighn1,text="modre oci", command=oci_modre)
modre.pack()
zelene=Button(desighn1,text="zelene oci", command=oci_zelene)
zelene.pack()
hnede=Button(desighn1,text="hnede oci", command=oci_hnede)
hnede.pack()


nic=Label(volby,text=" ")
nic.pack()

 
vlasy=tki.StringVar()

vlasecky=tki.Checkbutton(volby, text="vlasy", variable=vlasy, onvalue="ano", offvalue="ne")
vlasecky.pack(side=LEFT) 

print vlasy.get()  ...chová se jako kdyby proměná neměla hodnotu i když je pole uř předem zaškrtnuté
    
if vlasy.get() == "":    ...jen takhle funguje, na "ano" neslyši 
	print "ano!"
elif vlasy.get() == "...co sem?...":        
        print "ne"
                      ...ale ikdyž bych věděl co tam napsat nefungovalo by to protože se hned splní podmínka předtím kvůli zaškrtnutí předem

ale když mi sem napíšeš jak to má správně vypadat bude to na nic, nepochpím to.
já bych to pochopil tak  že by v první podmínce namísto ničeho /ale předzaškrtnutý checkbutton to přece nastavil na "ano"!\ ("") bylo "ano" a v druhé zase "ne" a bylo by to v nějaké smyčce která by stále kontrolovala jestli to uživatel nezměnil. Ale python by to takhle nepochopil a to by bylo na nic, nefungovalo by to a byl bych na stejném místě jako těď jsem...

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
VitPet0
Newbie
12. 6. 2014   #7
-
0
-

#6 VitPet
ahh zapoměl jsem na globální proměné, ty funkce ber jako kdybych pracoval s globálnímy proměnými

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
VitPet0
Newbie
12. 6. 2014   #8
-
0
-

AAA!! no jasně globální proměné neudělám to přes checkbutton ale jako dva normální buttony stejně jako oči! později dodám kód..

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
Řešení
z
~ Anonymní uživatel
268 příspěvků
12. 6. 2014   #9
-
0
-
Vyřešeno Nejlepší odpověď

...chová se jako kdyby proměná neměla hodnotu i když je pole uř předem zaškrtnuté

Definoval jsi, že on/off odpovídá hodnotám "ano"/"ne" a spojil jsi ten check s proměnnou, která neobsahuje "ano" ani "ne", takže se ten check musí nějak rozhodnout, co zobrazit - zřejmě je to tedy "zaškrtnuto" - a mělo by na něm i být vidět, že to není "ano" (u mě má šedé pozadí).

...chová se jako kdyby proměná neměla hodnotu i když je pole uř předem zaškrtnuté
...jen takhle funguje, na "ano" neslyši

A zkoušel jsi na něj kliknout? Zřejmě se ta proměnná nastavuje jen při změně. Pokud s tím checkem nic neděláš, tak v ní asi zůstane původní prázdný řetězec. Nejjednodušší bude tu proměnnou předem nastavit na platnou hodnotu, podle toho se ten check zobrazí a zároveň pak při změně aktualizuje proměnnou, takže v ní vždy bude jen "ano", nebo "ne", podle stavu toho checku. Jak už jsem psal...

...co sem?...
...ale ikdyž bych věděl co tam napsat nefungovalo by to protože se hned splní podmínka předtím kvůli zaškrtnutí předem

Máš dvě až tři možnosti. Co bys tam asi psal? Třeba "ne".

Hlavně nechápu, co od toho čekáš, když to máš takhle. Jestli chceš reagovat na změny toho checku, jako u těch buttonů, tak mu můžeš taky nastavit command.

Nahlásit jako SPAM
IP: 88.101.8.–
VitPet0
Newbie
13. 6. 2014   #10
-
0
-

#9 z
ehmm asi mi uniklo, jak u checkbuttonu nastavit command (stejně to bude k ničemu "pokusný" program funguje)? jinak díky za rady - pomohlo! když je proměná přednastavéná rovnou to odepíše "ano!" ale když jí odkliknu už se nic nestane, nešlo by aby se podmínka opakovala když se proměná změní? potom to už v podmínce nebude print ale další tlačítka - kdo by si nechtěl nastavit barvu vlasů ne? :-).

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
VitPet0
Newbie
13. 6. 2014   #11
-
0
-

#10 VitPet
chvilka přemýšlení - podmínka se bude opakovat ...třeba... každou 2 sekundu aby zjišťovala jestli to uživatel náhodou nezměnil. Ale jak? buď neumim programovat a nebo nebude stačit for x in range a time.sleep(2).

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
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, 30 hostů

Podobná vlákna

Zjištění konce řádků — založil Paul

Oddělení konce textu — založil dragon124

 

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