Hallo ich bin absoluter Neueinsteiger in der Sprache Python und bin grad dabei die GUI eines Taschenrechners zu implementieren.
Das Erstellen von Buttons bereitet mir keine Probleme.
Wie erstelle ich jedoch eine Menüleiste und ein Display?
Über Antwoten und Hilfe würde ich mich sehr freuen.
Danke im Vorraus
GUI eines Taschenrechner
Ich wüsste nicht wie eine Menubar zu realisieren wäre, da müsste man sich was zusammenbasteln mit labels, dazu nimmst du lieber wxPython.
Aber das Anzeigefeld könnte ein Entryfeld sein in dem die Werte immer ausgegeben werden.
Aber das Anzeigefeld könnte ein Entryfeld sein in dem die Werte immer ausgegeben werden.
Code: Alles auswählen
self.entry1=IntVar()
entry1=Entry(fenster,width=8,textvariable=self.entry1)
entry1.place(x=50, y=50)
Code: Alles auswählen
self.entry1.set(wasauchimmer)
das muss man sich nichts zusammenbasteln sorgenlos.sorgenlos hat geschrieben:Ich wüsste nicht wie eine Menubar zu realisieren wäre, da müsste man sich was zusammenbasteln mit labels......
http://effbot.org/tkinterbook/menu.htm
-
- User
- Beiträge: 4
- Registriert: Sonntag 2. Dezember 2007, 14:49
Danke für die hilfe, aber wenn ich das da einbaue klappt es immer noich nicht.
Hier mal mein Programmcode:
Hier mal mein Programmcode:
Code: Alles auswählen
import Tkinter
from Tkinter import *
class rechner:
def eins(self):
self.fenster=Tkinter.Tk()
self.fenster.geometry("300x300")
self.fenster.title('Rechner')
self.entry1=IntVar()
entry1=Entry(fenster,width=8,textvariable=self.entry1)
entry1.place(x=50,y=50)
button_7=Button(self.fenster,text='7',width=4,height=2)
button_7.grid(row=1,column=1,sticky=N)
button_8=Button(self.fenster,text='8',width=4,height=2)
button_8.grid(row=1,column=2,sticky=N)
button_9=Button(self.fenster,text='9',width=4,height=2)
button_9.grid(row=1,column=3,sticky=N)
button_4=Button(self.fenster,text='4',width=4,height=2)
button_4.grid(row=2,column=1,sticky=N)
button_5=Button(self.fenster,text='5',width=4,height=2)
button_5.grid(row=2,column=2,sticky=N)
button_6=Button(self.fenster,text='6',width=4,height=2)
button_6.grid(row=2,column=3,sticky=N)
button_1=Button(self.fenster,text='1',width=4,height=2)
button_1.grid(row=3,column=1,sticky=N)
button_2=Button(self.fenster,text='2',width=4,height=2)
button_2.grid(row=3,column=2,sticky=N)
button_3=Button(self.fenster,text='3',width=4,height=2)
button_3.grid(row=3,column=3,sticky=N)
button_0=Button(self.fenster,text='0',width=4,height=2,)
button_0.grid(row=4,column=1,sticky=N)
button_div=Button(self.fenster,text='/',width=4,height=2,foreground = "red")
button_div.grid(row=1,column=4,sticky=N)
button_mul=Button(self.fenster,text='*',width=4,height=2,foreground = "red")
button_mul.grid(row=2,column=4,sticky=N)
button_sub=Button(self.fenster,text='-',width=4,height=2,foreground = "red")
button_sub.grid(row=3,column=4,sticky=N)
button_add=Button(self.fenster,text='+',width=4,height=2,foreground = "red")
button_add.grid(row=4,column=4,sticky=N)
button_vorz=Button(self.fenster,text='+/-',width=4,height=2)
button_vorz.grid(row=4,column=2,sticky=N)
button_com=Button(self.fenster,text=',',width=4,height=2)
button_com.grid(row=4,column=3,sticky=N)
button_ist=Button(self.fenster,text='=',width=3,height=2,foreground = "red")
button_ist.grid(row=4,column=5,sticky=N)
self.fenster.mainloop()
#def createMenuBar(self):
# self.menuBar = Menu(self)
#self["menu"] = self.menuBar
horst = rechner()
horst.eins()
OMG schon wieder einer der den dummen `horst` nimmt weil ihm nix einfällt. Einer der Gründe warum Klassennamen gross geschrieben werden, ist dass man keine solch dämlichen Bezeichner erfinden muss, sondern in diesem Fall dann einfach ``rechner = Rechner()`` schreiben kann.
Der Methoden-Name `eins()` ist genauso unglücklich. Der Inhalt der Methode ist auch eher was für eine `__init__()`.
Zum Problem: Man kann nicht verschiedene Layoutmanager innerhalb eines Widgets mischen. Entweder nur `pack()`, nur `grid()` oder nur `place()`. Wobei man letzteres nur in ganz seltenen Ausnahmefällen verwenden sollte. Genau wie die Vorgabe der Grösse eines Fensters in der Regel nicht nötig sein sollte.
Der Methoden-Name `eins()` ist genauso unglücklich. Der Inhalt der Methode ist auch eher was für eine `__init__()`.
Zum Problem: Man kann nicht verschiedene Layoutmanager innerhalb eines Widgets mischen. Entweder nur `pack()`, nur `grid()` oder nur `place()`. Wobei man letzteres nur in ganz seltenen Ausnahmefällen verwenden sollte. Genau wie die Vorgabe der Grösse eines Fensters in der Regel nicht nötig sein sollte.
-
- User
- Beiträge: 4
- Registriert: Sonntag 2. Dezember 2007, 14:49
Dankeschön, mal kgucken ob es klappt
-
- User
- Beiträge: 4
- Registriert: Sonntag 2. Dezember 2007, 14:49
Wo genau liegt der Unterschied zwischen pack(), grid(), Place()?und was machen die einzelnen eingaben?
Der "Packer" ist der einfachste Layout-Manager. `pack()` wird in Thinking in Tkinter sehr ausgiebig verwendet und erklärt.
Beim "Gridder" wird das Container-Widget in eine Art Tabelle aufgeteilt in deren Zellen man Widgets platzieren kann.
Und bei `place()` gibt man absolute Koordinaten an. Das ist aber wie gesagt ein Spezialfall, den man normalerweise nicht verwenden sollte weil die GUIs dann unter Umständen nicht mit veränderten Grössen und Texten klar kommen.
Beim "Gridder" wird das Container-Widget in eine Art Tabelle aufgeteilt in deren Zellen man Widgets platzieren kann.
Und bei `place()` gibt man absolute Koordinaten an. Das ist aber wie gesagt ein Spezialfall, den man normalerweise nicht verwenden sollte weil die GUIs dann unter Umständen nicht mit veränderten Grössen und Texten klar kommen.
Code: Alles auswählen
self.entry1=IntVar()
entry1=Entry(fenster,width=8,textvariable=self.entry1)
entry1.place(x=50,y=50)
Einmal heißt eine lokale Variable 'entry1', und vorher wird noch ein Attribut mit dem selben Namen definiert. Python macht zwar kein Problem draus, klar, aber vorteilhaft finde ich es nicht^^
Grüße Markus