Problém s Tkinterem - získávání číselných hodnot z udělátka Entry (uložit prostě proměnnou z Entry) – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problém s Tkinterem - získávání číselných hodnot z udělátka Entry (uložit prostě proměnnou z Entry) – Python – Fórum – Programujte.comProblém s Tkinterem - získávání číselných hodnot z udělátka Entry (uložit prostě proměnnou z Entry) – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
vojtano_k0
Návštěvník
19. 9. 2006   #1
-
0
-

Dobrý den.
Mám menší problém. Snažím se udělat si napodobeninu testeru násobilky (ten program z druhé lekce) v okýnkách (Tkinter). Asi takhle vypadá zatím kód:

#autor=vojtech


import random
from Tkinter import *

#definicni cast:

a=random.randint(1,15)
b=random.randint(1,15)

def vypisPriklad():
otazka.delete(0, "end")
priklad="Kolik je %d * %d ?" % (a,b)
otazka.insert(0,priklad)

c=a*b

def kontrola_vysledku():
if c==odpoved:
vypis_kontroly1=u"Správně! Jdem na další příklad!"
ano_ne.insert(0,vypis_kontroly1)
else:
vypis_kontroly2=u"Bohužel. Zkus to znova!"
ano_ne.insert(0,vypis_kontroly2)
print c
#telo programu:

hlavni_okno=Tk()

uvod=Label(hlavni_okno, text=u"Vítejte v prográmku na zkoušené z násobilky!")
uvod.pack(padx=3, pady=3)

ramecek1=Frame(hlavni_okno)
ramecek1.pack()

otazka=Entry(ramecek1,width=15)
otazka.pack(side=LEFT, padx=3, pady=3)

odpoved=Entry(ramecek1,width=8)
odpoved.pack(padx=3, pady=3)

ramecek2=Frame(hlavni_okno)
ramecek2.pack()

ano_ne=Entry(ramecek2, width=15)
ano_ne.pack(side=LEFT, padx=3, pady=3)

zkontroluj=Button(ramecek2, text="Zkontroluj", command=kontrola_vysledku)
zkontroluj.pack(padx=3, pady=3)

dalsi_priklad=Button(hlavni_okno, text=u"Další příklad", command=vypisPriklad)
dalsi_priklad.pack(fill=BOTH, padx=3, pady=3)

hlavni_okno.mainloop()


Problém je následující: potřebuji nějak dostat ze zkoušeného odpověď (od toho je Entry se jménem odpoved). nevím ale jak. Zkoušel jsem to metodou odpoved.get(), ale vůbec nevím kam ji dát a jestli rozpozná řetězce od číselných hodnot a jak tu odpověď uložit do proměnné.

Díky moc za případnou pomoc :-) Vojtěch

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
Reklama
Reklama
geon0
Grafoman
19. 9. 2006   #2
-
0
-

replay=odpoved.get() # ulložená do proměnný

replay=int(replay) # převedená na obyčejný číslo

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
vojtano_k0
Návštěvník
19. 9. 2006   #3
-
0
-

Tak. Tohle je vy?e?eno. Ale objevil se nov? probl?m. Jde o to, ?e bych pot?eboval, aby se po ka?d?m stisku tla??tka "Nov? p??klad" znovu vygenerovaly n?hodn? prom?nn? (viz. k?d). Kdy? um?st?m deklaraci prom?nn?ch a a b mimo funkci vypisPriklad, tak budou po??d stejn? a? do ukon?en? programu. Zat?m co kdy? je um?st?m do funkce vypisPriklad, tak je nemohu pou??t d?le p?i porovn?v?n? v?sledku zadan?ho u?ivatelem a skute?n?ho v?sledku.

# -*- coding: utf-8 -*-.


#autor=vojtech

#import potrebnych modulu:

import random
from Tkinter import *

#definicni cast:

a=random.randint(1,15)
b=random.randint(1,15)
c=a*b

def vypisPriklad():
otazka.delete(0, "end")
odpoved.delete(0, "end")
ano_ne.delete(0, "end")
priklad="Kolik je %d * %d ?" % (a,b)
otazka.insert(0,priklad)

def kontrola_vysledku():
replay=odpoved.get()
replay=int(replay)
if c==replay:
vypis_kontroly1=u"Spr?vn?!"
ano_ne.insert(0,vypis_kontroly1)
else:
vypis_kontroly2=u"Bohu?el. ?patn?"
ano_ne.insert(0,vypis_kontroly2)

#telo programu:

hlavni_okno=Tk()

uvod=Label(hlavni_okno, text=u"V?tejte v progr?mku na zkou?en? z n?sobilky!")
uvod.pack(padx=3, pady=3)

uvod2=Label(hlavni okno, text=u"Do prav? horn? kolonky zadej v?sledek, nv pot? stiskni 'Zkontroluj'. V lev? doln? nkolonce se zobraz? vyhodnocen?")
uvod2.pack(padx=3,pady=3)

ramecek1=Frame(hlavni_okno)
ramecek1.pack()

otazka=Entry(ramecek1,width=15)
otazka.pack(side=LEFT, padx=3, pady=3)

odpoved=Entry(ramecek1,width=8)
odpoved.pack(padx=3, pady=3)

ramecek2=Frame(hlavni_okno)
ramecek2.pack()

ano_ne=Entry(ramecek2, width=15)
ano_ne.pack(side=LEFT, padx=3, pady=3)

zkontroluj=Button(ramecek2, text="Zkontroluj", command=kontrola_vysledku)
zkontroluj.pack(padx=3, pady=3)

dalsi_priklad=Button(hlavni_okno, text=u"Nov? p??klad", command=vypisPriklad)
dalsi_priklad.pack(fill=BOTH, padx=3, pady=3)


hlavni_okno.mainloop()


D?ky za help :-)

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
geon0
Grafoman
19. 9. 2006   #4
-
0
-

BluJacker by ti jistě poradil "global" ;-). TO ode mne nemůžeš čekat. Já ti poradím, i když se to v téhle fázi hůře vysvětluje, abys použil proměnnou již existující nějaké instance. Jakousi podproměnnou jiné specielní proměnné. Tou specielní proměnnou může být třeba "odpoved".

Vytvoření náhodných proměných tedy rozupneš do vypis priklad a bude to vypadat takto:
a=random.randint(1,15)
b=random.randint(1,15)
odpoved.vysledek=a*b

no a v druhé funkce použiješ proměnnou odpoved.vysledek misto toho "c"

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
19. 9. 2006   #5
-
0
-

tss. ja bych mu urcite neporadil global. pouzivam ted POUZE tridy a tedy by to bylo neco na zpusob: trida.promena :dabel:klidne az budu zpatky v praze napisu fungujici program nasobilky reseny tridami bez prikazu global:cigo:


sory, ze nepisu hacky, sem ve svycarsku a je tady naka vadna klavesnice...


EDIT:asi narazis na moji odpoved http://www.programujte.com/forum.php?akce=topic&Top_ID=1272

tak sem mu odpovedel tak jak se ptal a nenapsal jak by to bylo optimalni, tedy pouzit trida.promena

Tridy jsou bezvadna vlastnost pythonu a sem rad ze sem se je naucil, protoze bez nich se tezko da naprogramovat nejaky vetsi projekt. Kdo nezna tridi tak neoceni. Ja sam v zacatcich opovrhoval tridami, protoze jsem nevedel k cemu jsou a videl jsem v tom jenom vymysl jak ztizit programovani. Ale hlavne diky tvym bezvadnym kurzum na programujte jsem se dokazal naucit docenit vyhody trid. ak tedy jesete jednou dekuji za tvuj bezvany kurz :ok:

Nahlásit jako SPAM
IP: ...–
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š
geon0
Grafoman
19. 9. 2006   #6
-
0
-

Tak to je dobré. Byl jsi jedním z těch, kvůli kterým jsem předčasně OOP opustil. Nutno říci, že se mi tahle část moc nepovedla, že jsem se dost opakoval a nezvolil nejlepší příklady odpovídající čtenářům. Dneska bych to dělal dost jinak. Ale což, je to tak, jak to je. ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
20. 9. 2006   #7
-
0
-

proc si OOP opustil kvuli me? Je pravda ze se mi ukol nepovedl, ale...

pravda je ze ukazky nebyli voleny uplne nejlepe, ale slo o ten napad, impuls, abych se to naucil....

Nahlásit jako SPAM
IP: ...–
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š
geon0
Grafoman
20. 9. 2006   #8
-
0
-

a/ Nebylo to JEN kvůlu tobě
b/ Nebylo to kvůli tvému úkolu/úkolům
c/ Vyplynuo to z toho, jak jsem se bavil s tebou a jinými a jak jsem měl špatný pocit z nevhodně volených příkladů ...

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
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, 50 hostů

Podobná vlákna

Entry — založil adam

Entry point programu — založil Sefiros

Tkinter aktivní entry — založil xeonikx

[C#] Assembly Entry Point — založil Smokie

 

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