Entry eingabe

Fragen zu Tkinter.
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Entry eingabe

Beitragvon Ravenlord » Sonntag 8. Februar 2004, 19:37

Hallo,

ich brauch in einem Frame ein entry fenster, in das man was eingibt, dann enter drückt und der inhalt dann als variable genommen wird.
nach dem ganzen, soll das eingabefeld wieder leer erscheinen und das ganze von vorne, bis man 4 variablen hat.

Kann mir irgendwer erklären wie ich das mach???

Vielen Dank
Benutzeravatar
wuf
User
Beiträge: 1408
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Sonntag 8. Februar 2004, 23:38

Hallo Ravenlord

Probier es mal mit dem Modul
SimpleDialog.py aus dem
Tkinter-Verzeichnis /lib-tk.

Gruss wuf :wink:
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Sonntag 8. Februar 2004, 23:42

kannst du mir evtl den kompletten tag geben? :roll:
hab keine genaue ahnung was ich machen soll :oops:


danke vielmals
Benutzeravatar
wuf
User
Beiträge: 1408
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Montag 9. Februar 2004, 18:29

Hallo Ravenlord

Sorry ich habe dir das falsche Skript
angegeben. Es heisst nicht nur
SimpleDialog.py

sondern
tkSimpleDialog.py

Das Skript sollte sich auch im
Verzeichnis /python2.3/lib_tk befinden.

Du musst das Skript einfach in die Idle-
Umgebung laden und starten. Oder aus
einem Terminal starten.

Es zeigt hintereinander drei Eingabe-Dialoge.
Einer für Strings, einer für Floats und einer
für Integers. Die drei Dialoge werden nicht
alle auf einmal gezeigt, sondern nach Bestätig-
ung des einen kommt der andere.

Du kannst das Skript einmal durchschauen, es
lehnt sich stark an OOP.

Good Luck
Gruss wuf :wink:
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Montag 9. Februar 2004, 18:54

tut mir leid, das is mir irgendwie zu hoch :oops:
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 9. Februar 2004, 19:02

Der genaue pfad ist bei mir unter Debian-Linux

/usr/lib/python2.3/lib-tk/tkSimpleDialog.py


Gruß

Dookie
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Montag 9. Februar 2004, 19:02

ja soweit bin ich schon ... aber wie genau bau ich das jetz in den frame als eingabefeld ein?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 9. Februar 2004, 19:21

also in einen frame kannst du kein fenster einbauen, oder meinst du einfach nur ein entry-widget?


Dookie
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Montag 9. Februar 2004, 19:23

ein entry widget, in das ich was eingebe und dann einfach enter drücke und die eingabe einer variablen zugewiesen wird...
brauch ich für die Eingabe der Farben von meinem kleinen Mastermind ;)
Benutzeravatar
wuf
User
Beiträge: 1408
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Montag 9. Februar 2004, 20:17

Hallo Ravelord

Alles klar. Hier ist ein
einfacheres Beispiel:

Code: Alles auswählen

import sys
from Tkinter import *

def Beenden():
    sys.exit(0)

# Funktion für die Ausgabe
def Ausgabe(event):
   lb["text"] = 'Ausgabe: ' + eingabe.get()
   eingabe.set(0)


root = Tk()
root.title('Eingabe')

# Zeichensatz für die Ausgabe
font = ('Helvetica',20,'bold')

eingabe = StringVar()
eingabe.set(0)

# Eingabefeld
e = Entry(root,textvariable=eingabe,bg='white')
e.pack()
# Ausgabe mit Enter-Taste
e.bind("<Return>",Ausgabe)

# Label für die Ausgabe
lb = Label(root,
         fg='blue',
         text = 'Ausgabe: ' + eingabe.get(),
         font = font,
         )
lb.pack(pady = 10)

# Button für Beenden
bende = Button(root, text = "Ende", command = Beenden)
bende.pack(side= 'bottom')

root.mainloop()



Gruss wuf :wink:
Take it easy Mates!
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Montag 9. Februar 2004, 20:26

du bist ein schatz danke *fg*

e.bind("<Return>",Ausgabe)

die zeile hab ich gesucht ;)


aber noch was anderes in dem zusammenhang:

wie kann ich noch einstellen, dass der solange nix machen soll, bis ich da was eingegeben hab???

mfg + thx


/edit 10min später ;)
sry das ich nerve, habs jetz geschafft *froi*

/edit nochmal

hm irgendwie bekomm ich das doch nich auf die reihe :(
also ich hab jetz das eingabe feld, kann was eingaben, das wird an die liste angehängt und jetz brauch ich nur noch die möglichkeit, das nach der 4ten eingabe, eine andere funktion ausgeführt wird.






danke an alle!
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Beitragvon DER Olf » Dienstag 10. Februar 2004, 19:29

probiers mal mit ner for schleife.
frag mich nich wie, ich hab noch nie eine unter python benutzt. :D
(in php find ich sie besser....)
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Dienstag 10. Februar 2004, 19:32

dann wartet der aber nich bis ich was eingegeben hab, sondern malt mir 4 input fensterchen und dann will er den inhalt überprüfen, der is aber noch nich da :/
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 10. Februar 2004, 19:50

schau halt wie lange die liste der eingaben ist

Code: Alles auswählen

if len(liste) < 4:
    liste.append(eingabe)
else:
    #mach was anderes

ansonst nen stückchen Code in code-tags wär nett, dann kann man konkreter werden.


Gruß

Dookie
Ravenlord
User
Beiträge: 21
Registriert: Samstag 31. Januar 2004, 13:30

Beitragvon Ravenlord » Dienstag 10. Februar 2004, 19:56

das würde aber heißen, das ich noch ein fünftes mal was eingeben muss, damit der beendet...
so sieht der code an der stelle aus:

Code: Alles auswählen

Fenster = Tk()
frame1 = Frame(Fenster, relief = RIDGE, borderwidth =2)
frame1.pack(fill=NONE, side = LEFT)
frame2 = Frame(Fenster, relief = RIDGE, borderwidth = 2)
frame2.pack(fill="y", side = RIGHT)
canvas = Canvas(frame1 ,height = 800)
canvas.pack()
canvas2 = Canvas(frame2, height = 300, width = 150)
canvas2.pack()

eingabe = StringVar()
eingabe.set(0)
# Eingabefeld
e = Entry(frame2,textvariable=eingabe,bg='white')
e.pack()
# Ausgabe mit Enter-Taste
e.bind("<Return>",Zuweisen)
 
Grundstellung()   #hier malt der mir das leere Mastermind spielfeld

bende = Button(frame1, text = "Ende", command = Beenden)
bende.pack(side= 'bottom')



Fenster.mainloop()  <= das is dem entsprechend falsch, und hier will ich nach der 4ten eingabe in der Liste raus^^

#####weiter gehts dann mit der umwandlung in farben und den vergleich


z = {"rot" : 1, "gruen": 2, "lila": 3, "blau": 4, "gelb": 5, "grau": 6}
Liste = map(lambda x: z[x], Liste)
Richtig = []


# Vergleich
for element in Liste[:1]:
    a1 = element
for element in Liste[1:2]:
    b1 = element
for element in Liste[2:3]:
    c1 = element
for element in Liste[3:4]:
    d1 = element
...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder