Proměná se nukládá správně (Tkinter) – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Proměná se nukládá správně (Tkinter) – Python – Fórum – Programujte.comProměná se nukládá správně (Tkinter) – Python – Fórum – Programujte.com

 

VitPet0
Newbie
25. 6. 2014   #1
-
0
-

ahoj, mám program a vněm mněním chceckbuttonem proměnou a chvá se velice divně, pokud jako první zadám barvu klobouku hnědou pak už ostatní barvy nefungují a vždy se uloží jako hnědá, pokud nastavím jako první jinou barvu uloží se jako 0 (předem jsem sice difinoval že se mají rovnat 0 ale pak to měním a nufunguje to ...jen u hnědé  to funguje...):

from livewires import *
from Tkinter import *


oci = 0
pusa = 0
vlasy = 0
klobouk = 0
kloboukBarva = 0
vlasyBarva = 0
hnedevlasy = 0
cernevlasy = 0
zlutyKlobouk = 0
zelenyKlobouk = 0
hnedyKlobouk = 0


def SmileCreator():
		
	def tvoreni():

		set_colour(Colour.black)
	  
		begin_graphics()
		
		circle(300,200,200)
		move(300,250)
		draw(350,175)
		draw(275,175)

		
		if oci == "modre":
			set_colour(Colour.blue)
		elif oci == "zelene":
			set_colour(Colour.green)
		elif oci == "hnede":
			set_colour(Colour.brown)
				 
		circle(250,250,10, filled=1)
		circle(350,250,10, filled=1)
		

		if vlasy.get() == "ano":
			
			if vlasyBarva == "hneda":
				set_colour(Colour.brown)
			elif vlasyBarva == "cerna":
				set_colour(Colour.black)
			
				
			
			circle(300,270, endpoints = ((490,270), (110,270)), filled=1)
	
			 
		elif vlasy.get() == "ne":
			pass

		if klobouk.get() == "ano":
			
			if kloboukBarva == "hneda":
				set_colour(Colour.brown)
			elif kloboukBarva == "zelena":
				set_colour(Colour.green)
			elif kloboukBarva == "zluta":
				set_colour(Colour.yellow)
			
			
			
			move(50,300)
			draw(550,300)
			draw(550,330)
			draw(50,330)
			draw(50,300)
			move(150,300)
			draw(150,450)
			draw(450,450)
			draw(450,300)
			
			
			
				
		elif klobouk.get() == "ne":
			pass
			
		set_colour(Colour.red)
		
		
		if pusa == "vesela":
			circle(300,180, endpoints = ((150,175),(450,175)))
		elif pusa == "velmiVesela":
			circle(300,150, endpoints = ((150,150),(450,150)), filled=1)
		elif pusa == "rovna":
			move(150,100), draw(450,100)
		elif pusa == "smutna":
			circle(300,0, endpoints = ((425,75),(175,75)))

			
	tvoreni()   



	



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

def klobouk_zluta():
	global Kloboukbarva
	kloboukBarva="zluta"
	
def klobouk_zelena():
	global Kloboukbarva
	kloboukBarva="zelena"
		
def klobouk_hneda():
	global kloboukBarva
	kloboukBarva="hneda"
			
	
def pusa_smutna():
	global pusa
	pusa="smutna"
def pusa_vesela():
	global pusa
	pusa="vesela"
def pusa_rovna():
	global pusa
	pusa="rovna"
def pusa_velmiVesela():
	global pusa
	pusa="velmiVesela"

		


		
def vlasy_hneda():
	global vlasyBarva
	vlasyBarva="hneda"

def vlasy_cerna():
	global vlasyBarva	
	vlasyBarva="cerna"



def zmena():
	if vlasy.get() == "ano":
		global hnedevlasy
		global cernevlasy
		cernevlasy = Button(desighn3, text="hnede", command=vlasy_hneda)
		cernevlasy.pack()
		hnedevlasy = Button(desighn3, text="cerne", command=vlasy_cerna)
		hnedevlasy.pack()
	elif vlasy.get() == "ne":
		hnedevlasy.destroy()
		cernevlasy.destroy()





def zmena1():
	if klobouk.get() == "ano":
		global zelenyKlobouk
		global hnedyKlobouk
		global zlutyKlobouk
		zlutyKlobouk = Button(desighn4, text="zluty", command=klobouk_zluta)
		zlutyKlobouk.pack()
		hnedyKlobouk = Button(desighn4, text="hnedy", command=klobouk_hneda)
		hnedyKlobouk.pack()
		zelenyKlobouk = Button(desighn4, text="zeleny", command=klobouk_zelena)
		zelenyKlobouk.pack()
	elif klobouk.get() == "ne":
		zlutyKlobouk.destroy()
		hnedyKlobouk.destroy()
		zelenyKlobouk.destroy()

		




volby=Tk()
volby.title("SmileCreator")

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() 

desighn2 = Frame(volby)
desighn2.pack()

pusinka = Label(desighn2, text="pusa:")
pusinka.pack(side=LEFT)

rovna = Button(desighn2, text="rovna", command=pusa_rovna)
rovna.pack()
vesela = Button(desighn2, text="vesela", command=pusa_vesela)
vesela.pack()
velmiVesela = Button(desighn2, text="velmi vesela", command=pusa_velmiVesela)
velmiVesela.pack()
smutna = Button(desighn2, text="smutna", command=pusa_smutna)
smutna.pack()


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



desighn3 = Frame(volby)
desighn3.pack()
 
vlasy=StringVar()
vlasy.set("ne")

vlasecky=Checkbutton(desighn3, text="vlasy", variable=vlasy, onvalue="ano", offvalue="ne", command=zmena)
vlasecky.pack(side=LEFT)

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

desighn4 = Frame(volby)
desighn4.pack()

klobouk = StringVar()
klobouk.set("ne")
 
kloboucek=Checkbutton(desighn4, text="klobouk", variable=klobouk, onvalue="ano", offvalue="ne", command=zmena1)
kloboucek.pack(side=LEFT)

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

start = Button(volby, text="START!", command=SmileCreator)
start.pack(fill=BOTH)



volby.mainloop()

k běhu programu potřebujete modul Livewires. https://pypi.python.org/pypi/LiveWires#downloads

je jednoduchý a můj problém jsou barvi a ty se pochopí velmi snadno.

a ještě u vlasů to celé funguje ale u klobouku to nefunguje přitom princim je úplně stajný - JAKTO??

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

#1 VitPet
HHHH chvíly jsem nad tím přemýšlel ale na nic jsem nepřišel... fakt hodinu sedím a zkuším ale nic... vážněmi na to nepřijdete?? já už vážně nevím :-(

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

je nás tu docela dost to fakt nikdona nic nepřišel prosím, ja už fakt nevim.

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
25. 6. 2014   #4
-
0
-
Nerozhodně

#3 VitPet
Prosím, použij debugger, ať víš, jak se ti to chová a kde je zakopaný pes. Pak napiš, na kterém řádku se chová program jinak, než jsi předpokládal..

Nahlásit jako SPAM
IP: 178.72.234.–
VitPet0
Newbie
26. 6. 2014   #5
-
0
-

nepochopil jsem debugger, prosím jak ho mám pužít??

PS: promiň za -1 chtěl jsem vyzkušet co to dělá.

Nahlásit jako SPAM
IP: 89.176.75.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
27. 6. 2014   #6
-
0
-

1/ POkud používáš Idle, pak v Shellu zaškrtní debugger.

2/ Zaškrtni všechna čtyři políčka v Debug control a  pak spusť svůj kód.

3/ A pak mačkej Step v Debug Control a snaž se pochopit, co se děje.

Hodně štěstí

Nahlásit jako SPAM
IP: 178.72.234.–
VitPet0
Newbie
24. 7. 2014   #7
-
0
-

když spustím přes IDLE klávesou f5 svůj program a kliknu na debugg > debugger odepíše You can only toggle the debugger when idle, jak mám tedy zapnout Debugger přes editor ne až v shellu

Nahlásit jako SPAM
IP: 83.208.98.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
24. 7. 2014   #8
-
0
-

Udělej to obráceně. Napřed zaškrtni v shell volbu debug a teprve potom spusť F5 svůj program.

Nahlásit jako SPAM
IP: 178.72.234.–
hanpari0
Stálý člen
24. 7. 2014   #9
-
0
-

https://www.youtube.com/watch?v=kpyDMK9ZeV4

Nahlásit jako SPAM
IP: 178.72.234.–
VitPet0
Newbie
25. 7. 2014   #10
-
0
-

#9 hanpari
nějak se to nechová jak by mělo mám zaplý debugger ale když dám recent files a spustím program otevře se v editoru nespustí se :-( 

Nahlásit jako SPAM
IP: 83.208.98.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
25. 7. 2014   #11
-
0
-

Musíš se s tím poprat.

1/ Otevři si v Idle editoru soubor *.py
2/ Spusť ho
3/ Objeví se ti okno shellu. V něm odfajkuj debugger.
V shellu se ti objeví DEBUG ON
4/ Přepni se do editoru
5/ Znovu spusť svůj kód.
6/ Nyní můžeš krokovat svůj kód pomocí tlačítka STEP.
7/ Měl bys mít zároveň otevřená 3 okno: Debug control, Editor a Shell

Víc po lopatě ti už to napsat nedokážu :)

Snad jen ještě jedna rada. Pro začátek zkus krokovat nějakou jednoduchou smyčku, vyhni se rekurzi nebo komprehenzím. To tě může leda zmást.

Nahlásit jako SPAM
IP: 195.5.186.–
VitPet0
Newbie
25. 7. 2014   #12
-
0
-

ok, debugger už funguje ale hrozně dlouho trvá než se proklikám importy a většinou se to zasekne u importu liwevires na 145 line nešlo by vypnout kontrolování importů?

Nahlásit jako SPAM
IP: 83.208.98.–
Hmmmmmm... Sooooooo Python
hanpari0
Stálý člen
25. 7. 2014   #13
-
0
-

Od toho tam jsou volby OVER a OUT . A v editoru Set breakpoint

Nahlásit jako SPAM
IP: 178.72.234.–
VitPet
~ Anonymní uživatel
42 příspěvků
25. 7. 2014   #14
-
0
-

#13 hanpari
a jak ty funkce pracují popíšeš mi to prosím?

Nahlásit jako SPAM
IP: 2a00:1028:8b41:881e:21e:8...–
VitPet
~ Anonymní uživatel
42 příspěvků
25. 7. 2014   #15
-
0
-

A navíc dubugger vůbec nezobrazuje obsah funkcí!

Nahlásit jako SPAM
IP: 2a00:1028:8b41:881e:21e:8...–
VitPet
~ Anonymní uživatel
42 příspěvků
25. 7. 2014   #16
-
0
-

#15 VitPet
a jen vypíše uložené proměné a kód co jsem napsal ne co python dělá, jak to tedy pužiju k odhalení chyby??

Nahlásit jako SPAM
IP: 2a00:1028:8b41:881e:21e:8...–
hanpari0
Stálý člen
26. 7. 2014   #17
-
0
-

No, nevím, jestli si ze mne neděláš srandu, ale dobrá.

1/ Set breakpoint - program doběhne až do stanoveného místa, odkud ho můžeš pomocí step krokovat nebo dál pomocí go nechat dál běžet

2/ Go - program běží do dalšího breakpointu nebo do konce

3/ Step - provede každý jeden řádek, včetně volání modulů, atd

4/ Over - přeskočí volání funkce

5/ Out  - vyskočí z iterace, např. cyklu for

6/ Quit - ukončí debugger

Locals - aktuální stav lokálních proměnných

Globals - aktuální stav globálních proměnných

Stack - ukazuje, na kterém řádku právě jsi

Source - vyznačí v editoru prováděný řádek.

Nejlepší je mít debug a editor vedle sebe na monitoru. Stav proměnných se průběžně mění. Ideální je si nastavit breakpoint někde před místem, které chceš zkoumat a pak si ho odkrokovat.

Nahlásit jako SPAM
IP: 178.72.234.–
VitPet
~ Anonymní uživatel
42 příspěvků
27. 7. 2014   #18
-
0
-

#17 hanpari
no, promiň včera mi dalo dost práce to zprovoznit a byl jsem dost naštvanej že to nefunguje tak jak jsem myslel. ale ok díky.

Nahlásit jako SPAM
IP: 2a00:1028:8b41:881e:21e:8...–
hanpari0
Stálý člen
27. 7. 2014   #19
-
0
-

V pohodě, doufám, že jsi už na to přišel :)

Nahlásit jako SPAM
IP: 178.72.234.–
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

Proměná C# — založil ASP.NET

Proměná — založil pr

Promena — založil dc195

Menu proměná — založil roman.jaros

Proměná hodnota — založil Jan

 

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