Zahlen generieren

Fragen zu Tkinter.
Antworten
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

upss sorry hat einen fehler im Code

Code: Alles auswählen

zahl=100 
def speichern( xyz ): #xyz ist nur ne Variable 
    datei=file('werte.txt', 'w') 
    datei.write(str(xyz)+'\n') #ein wert Zahl 100 wird gespeichert    datei.close() 
so alles wieder ok!

versuch mal erst unter IDLE zu testen

Code: Alles auswählen

>>> meinWert = 100
>>> def speichern( xyz ):
	datei=file('werte.txt', 'w')
	datei.write(str(xyz)+'\n')
	datei.close()

	
>>> speichern(meinWert) #Funktion def speichern wird aufgerufen....
>>> 
Tom01
User
Beiträge: 10
Registriert: Montag 17. Juli 2006, 13:44

Jetzt möchte ich, wenn auf speichern geklickt wird, der Wert in eine Datei gespeichert wird (funktioniert auch schon) und wenn uaf Drucken geklickt wird, soll der Code, der Firmenname und das Datum nebeneinander in eine Datei geschrieben werden.
Mein Versuch funktioniert leider nicht:

jetzt kommt immer das als Ergebnis:
Firmenname: <function firmenname at 0x00BB6BF0>
Datum: <function datum at 0x00BB6C70>
Code: 17153627

Code: Alles auswählen

from Tkinter import *
import time
import random
import shelve

zahl = random.randrange(0, 99999999)

###########################

def firmenname():
	fenster.label.config(text='Hier steht der Firmenname')

def code():
    fenster.label2.config(text=zahl)

def datum():
    fenster.label3.config(text=time.asctime())

def speichern(xyz):
    try:
        datei = file('werte.txt', 'a+')
        datei.write(str(xyz)+'\n')
        datei.close()
    except IOError:
        print 'Speichern nicht moeglich'

def drucken(firma, datum, code):
    try:
        ausdruck = file('ausdruck.txt', 'a+')
        ausdruck.write("Firmenname: " + str(firma)+'\n')
        ausdruck.write("Datum: " + str(datum)+'\n')
        ausdruck.write("Code: " + str(code)+'\n')
        ausdruck.close()
    except IOError:
        print 'Speichern nicht moeglich'

############################
    
fenster=Tk()
fenster.label= Label(fenster,text='Firma', font=('Comic Sans MS',16),fg='blue', width = 20)
fenster.label2= Label(fenster,text='Code', font=('Comic Sans MS',16),fg='blue', width = 10)
fenster.label3= Label(fenster,text='Datum', font=('Comic Sans MS',16),fg='blue', width = 20)
fenster.label.pack(side=LEFT, padx = 20, pady = 20, fill = BOTH, expand=0)
fenster.label2.pack(side=LEFT, padx = 20, pady = 20, fill = BOTH, expand=0)
fenster.label3.pack(side=LEFT, padx = 20, pady = 20, fill = BOTH, expand=0)

##

fenster.buttonFirma=Button(master=fenster,
		      text='Firma',
		      command=firmenname, bg='yellow')
fenster.buttonFirma.pack(side=BOTTOM, padx = 20, pady = 20, fill = BOTH)
##

fenster.buttonCode=Button(master=fenster,
		      text='Code',
		      command=code, bg='yellow')
fenster.buttonCode.pack(side=BOTTOM, padx = 20, pady = 20, fill = BOTH, expand=0)
##

fenster.buttonDatum=Button(master=fenster,
		      text='Datum',
		      command=datum, bg='yellow')
fenster.buttonDatum.pack(side=BOTTOM, padx = 20, pady = 20, fill = BOTH, expand=0)
##

fenster.buttonExit = Button(text = "Exit", 
          command = fenster.destroy)
fenster.buttonExit.pack(side = BOTTOM, padx = 20, pady = 20, fill = BOTH, expand=0)
##

fenster.buttonSpeichern = Button(text = "Speichern", 
       command = speichern(zahl))
fenster.buttonSpeichern.pack(side = BOTTOM, padx = 20, pady = 20, fill = BOTH, expand=0)
##

fenster.buttonDrucken = Button(text = "Drucken",
          command = drucken(firmenname, datum, zahl))
fenster.buttonDrucken.pack(side = BOTTOM, padx = 20, pady = 20, fill = BOTH, expand=0)
##



fenster.mainloop()

BlackJack

Vielleicht solltest Du das mit der GUI erst einmal weglassen und Dich mit den Grundlagen vertraut machen. Du versuchst schon wieder Funktionen in Zeichenketten umzuwandeln.

Ausserdem werden einige Funktionen, die Du an Buttons als `command` binden willst, bei Dir ausgeführt und der Rückgabewert an `command` gebunden.

Schreib doch erst einmal ein kleines Skript mit den Funktionen, also Zufallszahl generieren, in Datei schreiben und Drucken und eine kleine Testfunktion und schreib dann dazu den GUI Teil wenn alles läuft.

Und versuch globale Variablen bei den Funktionen zu vermeiden. Wenn etwas von "aussen" kommt, dann sollte es als Argument übergeben werden und Ergebnisse sollten möglichst nur als Rückgabewert nach aussen dringen.
Antworten