Podmínka s boolovskou proměnnou – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmínka s boolovskou proměnnou – Python – Fórum – Programujte.comPodmínka s boolovskou proměnnou – Python – Fórum – Programujte.com

 

Navara
~ Anonymní uživatel
68 příspěvků
19. 10. 2008   #1
-
0
-

Dobrý den.
Mám takový problém. Vytvářím program, a potřebuji v něm udělat funkci, která se bude provádět od jisté události (kliknutí na obrázek na Canvasu, zavolání funkce již bylo vyřešeno), a kterou zase kdykoliv jinou zavolanou funkcí zrušit (puštěním myši). Řešil jsem to pomocí booleanu nějak takto:



PROVED = True
def FunkceKteraSeMaOpakovat():
if PROVED = True:
# příkazy...
FunkceKteraSeMaOpakovat()

def JinaFunkce(): # Funkce která má zastavit opakování první funkce
# příkazy
if PROVED = True
PROVED = False

CANVAS.bind("<Button-1>", FunkceKteraSeMaOpakovat)
CANVAS.bind("<ButtonRelease-1", JinaFunkce)


Myslel jsem, že když nastavím proměnou PROVED na False, tak se první funkce přestane opakovat, protože přestane platit podmínka že PROVED = True. Ovšem toto se neděje, první funkce se pořád opakuje.

Prosím dejte mi někdo radu na cokoliv@navara.wz.cz , nebo sem, jak toto vyřešit. Děkuji
Navara

Nahlásit jako SPAM
IP: 88.100.170.–
Blujacker
~ Moderátor
0
Grafoman
19. 10. 2008   #2
-
0
-

Malá chybička:



if PROVED = True

musí být


if PROVED == True

Nahlásit jako SPAM
IP: 66.68.54.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Navara
~ Anonymní uživatel
68 příspěvků
20. 10. 2008   #3
-
0
-

To Blujacker : Jaj sorry, tohle mám ve svém zdrojovém kódu dobře, jenom tady sem to napsal špatně, tím to asi nebude... Fakt sorry, ty dvě rovnáse tam mám a stejně to nejede. Žádnou chybu no nehází, jenom prostě ta proměnná se nenastaví na hodnotu která by zarazila první funkci. Dal jsem tam ještě do tý opakující funkce

print PROVED

aby to ukazovalo pořád co tam je nastavenýho a pořád dokola to vypisuje True, i když ta druhá funkce proběhla (nevyhodilo mi to žádnou chybu)

Nahlásit jako SPAM
IP: 88.100.170.–
pawlik0
Grafoman
20. 10. 2008   #4
-
0
-

To Navara : IMHO chyba bude v tom, že proveď není globální, pokud zvládáš OOP, máš vyhráno, pokud ne, koukni se na http://www.py.cz/Global

Nahlásit jako SPAM
IP: 84.42.151.–
Sa Nata A Na. Howgh
Navara
~ Anonymní uživatel
68 příspěvků
20. 10. 2008   #5
-
0
-

Dík, už to fungovalo, ale teď mi to zase píše:



def pusteno_kdekoliv(parametres):
if PUSTIT_TLACITKA == True:
NAVARA.itemconfig(TLACITKO1, image=TLACITKO_DVOJITE_NAHORE)
winsound.PlaySound("ZVUKY/PUSTIT.wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
PUSTIT_TLACITKA = False

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "F:\NAVARASIM\NAVARA.py", line 180, in pusteno_kdekoliv
if PUSTIT_TLACITKA == True:
UnboundLocalError: local variable 'PUSTIT_TLACITKA' referenced before assignment

nebo když jsem se pokoušel o zjištění stavu:


print PUSTIT_TLACITKA

Tak vyskočila ta samá chyba jako výše
Fakt sorry že s tím tady dělám díru do světa, ale nějak na to nemůžu přijít

Nahlásit jako SPAM
IP: 88.100.170.–
KIIV
~ Moderátor
+43
God of flame
20. 10. 2008   #6
-
0
-

To Navara : referenced before assignment
to myslim mluvi za vse...

odkazujes se na neco co zatim neexistuje...

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Navara
~ Anonymní uživatel
68 příspěvků
21. 10. 2008   #7
-
0
-

Už jsem na to přišel. Do každé funkce ve které je ta globální[ proměnná odkazuje stačí připsat ten tučný řádek:



def pusteno_kdekoliv(parametres):
global PUSTIT_TLACITKA
if PUSTIT_TLACITKA == True:
NAVARA.itemconfig(TLACITKO1, image=TLACITKO_DVOJITE_NAHORE)
winsound.PlaySound("ZVUKY/PUSTIT.wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
PUSTIT_TLACITKA = False


Nahlásit jako SPAM
IP: 88.100.170.–
Navara
~ Anonymní uživatel
68 příspěvků
21. 10. 2008   #8
-
0
-

Navara napsal:
Už jsem na to přišel. Do každé funkce ve které je ta globální[ proměnná odkazuje stačí připsat ten tučný řádek:


def pusteno_kdekoliv(parametres):
global PUSTIT_TLACITKA
if PUSTIT_TLACITKA == True:
NAVARA.itemconfig(TLACITKO1, image=TLACITKO_DVOJITE_NAHORE)
winsound.PlaySound("ZVUKY/PUSTIT.wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
PUSTIT_TLACITKA = False


Tedy s Vaší pomocí jsem na to přišel - dík ;-)

Nahlásit jako SPAM
IP: 88.100.170.–
KIIV
~ Moderátor
+43
God of flame
21. 10. 2008   #9
-
0
-

koukam te to je prakticky jako v php :D

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 15 hostů

Podobná vlákna

Struktura s promennou — založil Hlavinka

Podprogramy s proměnnou — založil Nevia

 

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