Taschenrechner programmieren

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Marcus82
User
Beiträge: 4
Registriert: Montag 23. Juni 2008, 09:34

hallo zusammen

ich bin ein python neuling und versuche derzeit einen taschenrechner mit python und glade zu programmieren
hab auch schon die tasten definiert hab aber jetzt das problem das er mir beim drücken einer taste sie mir nur in der shell wiedergibt
wie bringe ich ihn dazu mir sie im ausgabe fenster anzuzeigen??

bin vollkommen ratlos und hab bis jetzt noch nichts dazu gefunden

hier mein code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Taschenrechner 

# Impotieren der Module

import pygtk,  gtk,  gtk.glade

def minus(widget,  data):
    print data
    
def plus(widget,  data):
    print data
    
def mal(widget,  data):
    print data

def geteilt(widget,  data):
    print data
    
def istgleich(widget,  data):
    print data
    
def komma(widget,  data):
    print data
    
def zahlen(widget,  data):
    print data
    


gladetree = gtk.glade.XML("taschenrechner.glade",  "window1")
window1=gladetree.get_widget("window1")
window1.show() 
gladetree.get_widget("Minus").connect('clicked', minus,  "-" )
gladetree.get_widget("Plus").connect('clicked', plus,  "+" )
gladetree.get_widget("Mal").connect('clicked', mal,  "*" )
gladetree.get_widget("Geteilt").connect('clicked', geteilt,  "/" )
gladetree.get_widget("Komma").connect('clicked', komma,  "," )
gladetree.get_widget("Null").connect('clicked', zahlen,  "0" )
gladetree.get_widget("Eins").connect('clicked', zahlen,  "1" )
gladetree.get_widget("Zwei").connect('clicked', zahlen,  "2" )
gladetree.get_widget("Drei").connect('clicked', zahlen,  "3" )
gladetree.get_widget("Vier").connect('clicked', zahlen,  "4" )
gladetree.get_widget("Fünf").connect('clicked', zahlen,  "5" )
gladetree.get_widget("Sechs").connect('clicked', zahlen,  "6" )
gladetree.get_widget("Sieben").connect('clicked', zahlen,  "7" )
gladetree.get_widget("Acht").connect('clicked', zahlen,  "8" )
gladetree.get_widget("Neun").connect('clicked', zahlen,  "9" )
ausgabe=gladetree.get_widget("Ausgabe")
ausgabe.set_text()



gtk.main() 
Zuletzt geändert von Marcus82 am Montag 23. Juni 2008, 13:46, insgesamt 2-mal geändert.
Marcus82
User
Beiträge: 4
Registriert: Montag 23. Juni 2008, 09:34

hab das problem lösen können aber nun das problem das er mir nur eine zahl ausgibt weis jemand wie ich das lösen könnte?

hier mein code erweitert

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Taschenrechner 

# Impotieren der Module

import pygtk,  gtk,  gtk.glade



def minus(widget, result,  data):
    print data
    
def plus(widget,  data):
    print data
    
def mal(widget,  data):
    print data

def geteilt(widget,  data):
    print data
    
def istgleich(widget,  data):
    print data
    
def komma(widget,  data):
    print data
    
def zahlen(widget, data):
    ausgabe.set_text(str(data))
    

    


gladetree = gtk.glade.XML("taschenrechner.glade",  "window1")
window1=gladetree.get_widget("window1")
window1.show() 
gladetree.get_widget("Minus").connect('clicked', minus,  "-" )
gladetree.get_widget("Plus").connect('clicked', plus,  "+" )
gladetree.get_widget("Mal").connect('clicked', mal,  "*" )
gladetree.get_widget("Geteilt").connect('clicked', geteilt,  "/" )
gladetree.get_widget("Komma").connect('clicked', komma,  "," )
gladetree.get_widget("Null").connect('clicked', zahlen,  0 )
gladetree.get_widget("Eins").connect('clicked', zahlen,  1 )
gladetree.get_widget("Zwei").connect('clicked', zahlen,  2 )
gladetree.get_widget("Drei").connect('clicked', zahlen,  3 )
gladetree.get_widget("Vier").connect('clicked', zahlen,  4 )
gladetree.get_widget("Fünf").connect('clicked', zahlen,  5 )
gladetree.get_widget("Sechs").connect('clicked', zahlen,  6 )
gladetree.get_widget("Sieben").connect('clicked', zahlen,  7 )
gladetree.get_widget("Acht").connect('clicked', zahlen,  8 )
gladetree.get_widget("Neun").connect('clicked', zahlen,  9 )
ausgabe=gladetree.get_widget("Ausgabe")


    






gtk.main() 
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ich glaube, du vermischst Logik und Anzeige zu sehr.
Wenn du eine Button "Zahlen" betätigst, sollte der entsprechende Wert an einen String, der die Zahl repräsentiert, angehängt werden. Die Anzeige zeigt nun einfach diesen String an. Fürs Rechnen später mußt du den String in eine Zahl verwandeln. Ach ja, und

Code: Alles auswählen

from __future__ import division
ist auch empfehlensert...
Marcus82
User
Beiträge: 4
Registriert: Montag 23. Juni 2008, 09:34

hab immer noch das selbe problem irgend wie blicke ich das nicht so ganz :D
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Marcus82:

Code: Alles auswählen

ausgabe.set_text(ausgabe.get_text()+str(data))
Marcus82
User
Beiträge: 4
Registriert: Montag 23. Juni 2008, 09:34

danke hat geklappt!

ich hab nun ein andres problem

ich würde gern einen stack einbauen als liste so das er mir die zahlen und operatoren dort rein schiebt von unten nach oben und mir das dann mit = berechnet

kennt jemand vielleicht eine andere dokumentation
als auf http://docs.python.org/tut/ ?

bzw. kann mir jemand da was empfehlen?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Marcus82 hat geschrieben:kennt jemand vielleicht eine andere dokumentation
als auf http://docs.python.org/tut/ ?
bzw. kann mir jemand da was empfehlen?
Ohne zu wissen, was dir an diesem Tutorial nicht gefällt, ist es schwer, dir etwas anderes zu empfehlen.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Und ohne soliden Grundlagen macht GUI-Programmierung so oder so keinen Spaß.
Antworten