Kalkulačka v Pythonu - problém s Entry - zapisování čísel – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kalkulačka v Pythonu - problém s Entry - zapisování čísel – Python – Fórum – Programujte.comKalkulačka v Pythonu - problém s Entry - zapisování čísel – Python – Fórum – Programujte.com

 

vojtano_k0
Návštěvník
23. 9. 2006   #1
-
0
-

Mám (zase :-) menší problém snažím se si naprogramovat kalkulačku v pythonu. Neumím však donutit vstupní pole Entry, aby zapisovalo vložená čísla zprava (tak jak to je u všech jiných kalkulaček). Momentálně když chci zapsat číslo např. 21 (stisknu 2 a potom 1) tak se mi do vstupního pole zapíše 12. Zapisování číslic je řešeno pomocí funkce (funkce je přiřazena Buttonu s nápisem jedna):

def jednicka_fce():

jedna=1
stavovy_radek.insert(0, jedna)

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
Jakub Vojáček
~ Moderátor
0
Grafoman
23. 9. 2006   #2
-
0
-

něco takového?



from Tkinter import*
class Kalkulacka:
def __init__(self,okno):
self.okno=okno
self.vstup=Entry(justify=RIGHT)
self.vstup.pack(fill=X)
Button(text="1",command=lambda:self.vloz_cislo(1)).pack()
Button(text="2",command=lambda:self.vloz_cislo(2)).pack()
def vloz_cislo(self,cislo):
self.vstup.insert(END,cislo)

okno=Tk()
Kalkulacka(okno)
mainloop()

stačí pak místo pack použít grid, dodělat tlacitka a je to...

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š
vojtano_k0
Návštěvník
23. 9. 2006   #3
-
0
-

No jako jo, ale ja myslel n?co v tom smyslu, ?e bych donutil Entry, aby zapisovalo zprava, ch?p??? Zat?m jsem vymyslel toto:

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


#autor: vojtech
#zacatek vyvoje: 23. 9. 2006
#final release:

#import:

from Tkinter import*

#definicni cast:

#definice zapisovani cislic:

def jednicka_fce():
jedna=1
stavovy_radek.insert(0, jedna)

def dvojka_fce():
dva=2
stavovy_radek.insert(0, dva)

def trojka_fce():
tri=3
stavovy_radek.insert(0,tri)

def ctyrka_fce():
ctyri=4
stavovy_radek.insert(0,ctyri)

def petka_fce():
pet=5
stavovy_radek.insert(0,pet)

def sestka_fce():
sest=6
stavovy_radek.insert(0,sest)

def sedmicka_fce():
sedm=7
stavovy_radek.insert(0,sedm)

def osmicka_fce():
osm=8
stavovy_radek.insert(0,osm)

def devitka_fce():
devet=9
stavovy_radek.insert(0,devet)

def nula_fce():
zero=0
stavovy_radek.insert(0,zero)

#definice pocetnich vykonu:

def vymazat_fce():
stavovy_radek.delete(0,"end")

#telo programu (viditelna cast):

hlavni_okno=Tk()

hlavni_okno.title("Kalkula?ka")

#stavovy radek:

stavovy_radek=Entry(hlavni_okno, width=30)
stavovy_radek.pack(padx=4, pady=4)

#ramecky:

ramecek1=Frame(hlavni_okno)
ramecek1.pack()

ramecek2=Frame(hlavni_okno)
ramecek2.pack()

ramecek3=Frame(hlavni_okno)
ramecek3.pack()

ramecek4=Frame(hlavni_okno)
ramecek4.pack()

#prvni radek buttonu

sedmicka=Button(ramecek1, text='7', width=5, command=sedmicka_fce)
sedmicka.pack(side=LEFT, padx=4, pady=4)

osmicka=Button(ramecek1, text='8', width=5, command=osmicka_fce)
osmicka.pack(side=LEFT, padx=4, pady=4)

devitka=Button(ramecek1, text='9', width=5, command=devitka_fce)
devitka.pack(side=LEFT, padx=4, pady=4)

vymazat=Button(ramecek1, text='Vymazat', width=9, command=vymazat_fce)
vymazat.pack(side=LEFT, padx=4, pady=4)

#druhy radek buttonu

ctyrka=Button(ramecek2, text='4', width=5, command=ctyrka_fce)
ctyrka.pack(side=LEFT, padx=4, pady=4)

petka=Button(ramecek2, text='5', width=5, command=petka_fce)
petka.pack(side=LEFT, padx=4, pady=4)

sestka=Button(ramecek2, text='6', width=5, command=sestka_fce)
sestka.pack(side=LEFT, padx=4, pady=4)

deleno=Button(ramecek2, text='/', width=3)
deleno.pack(side=LEFT, padx=4, pady=4)

krat=Button(ramecek2, text='*', width=3)
krat.pack(side=LEFT, padx=4, pady=4)

#treti radek buttonu

jednicka=Button(ramecek3, text='1', width=5, command=jednicka_fce)
jednicka.pack(side=LEFT, padx=4, pady=4)

dvojka=Button(ramecek3, text='2', width=5, command=dvojka_fce)
dvojka.pack(side=LEFT, padx=4, pady=4)

trojka=Button(ramecek3, text='3', width=5, command=trojka_fce)
trojka.pack(side=LEFT, padx=4, pady=4)

minus=Button(ramecek3, text='-', width=3)
minus.pack(side=LEFT, padx=4, pady=4)

plus=Button(ramecek3, text='+', width=3)
plus.pack(side=LEFT, padx=4, pady=4)

#ctvrty radek buttonu

nula=Button(ramecek4, text='0', width=5)
nula.pack(side=LEFT, padx=4, pady=4)

rovna_se=Button(ramecek4, text='=', width=5)
rovna_se.pack(side=LEFT, padx=4, pady=4)

#mainloop

hlavni_okno.mainloop()



prost? donutit Entry zapisovat zprava :-)

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
Farundel0
Super člen
23. 9. 2006   #4
-
0
-

No, ja Tkinter nemam nejak rad, takze ho moc neumim, ale zkus se mrknout [url=http://tkintercz.wz.cz/entry.htm]sem[/url] a vyhledat si tam atribut justify...

EDIT: Promin, uz je to v poradku...

Nahlásit jako SPAM
IP: ...–
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
vojtano_k0
Návštěvník
23. 9. 2006   #5
-
0
-

Jsi si jistý tím odkazem? Nějak mi nefunguje...

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
Jakub Vojáček
~ Moderátor
0
Grafoman
23. 9. 2006   #6
-
0
-

ten odkaz je takle:
http://www.tkintercz.wz.cz/entry.htm

ale teď tě nechápu, dyž v tom mém příkladu se do Entry zapisuje zprava!
musíš nastavit to:

 justify=RIGHT



v tom tvém příkladu stačí přidat to justify a pak upravit f-ce:


def nula_fce():

zero=0

stavovy_radek.insert(END,zero)

to cislo se musi vložit na poslední místo (END), ne na první(0)

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š
vojtano_k0
Návštěvník
23. 9. 2006   #7
-
0
-

To ano, dobře, ale když zmáčknu button 5 a potom 6, vypíše se mi 65. To je ten háček :-)

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
vojtano_k0
Návštěvník
23. 9. 2006   #8
-
0
-

Promiň, poslední příspěvek neber v potaz, nepřečetl jsem si druhou část tvého :-) A díky moc za help, hodně mi to pomohlo.

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
Jakub Vojáček
~ Moderátor
0
Grafoman
23. 9. 2006   #9
-
0
-

nemáš zač :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š
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, 20 hostů

 

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