Textfelder auslesen

Fragen zu Tkinter.
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Textfelder auslesen

Beitragvon nightm4r3^ » Donnerstag 15. Mai 2008, 18:31

High all!
Ich habe eine Frage zu Textfelder in Tkinter.
Wie ist es möglich (oder ist es überhaupt möglich) Textfelder auszulesen um zum Beispiel die Länge der eingegebenen Zeichen zu ermitteln.

mfg nightm4r3^
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Donnerstag 15. Mai 2008, 19:27

Zitat von http://effbot.org/tkinterbook/text.htm

To fetch the text contents of the widget, use the get method:
contents = text.get(1.0, END)
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Samstag 17. Mai 2008, 11:48

Ich habe es jetzt so gemacht, aber er gibt mir jetzt die Fehlermeldung:

Code: Alles auswählen

NameError: global name 'END' is not defined


Woran liegt das?
BlackJack

Beitragvon BlackJack » Samstag 17. Mai 2008, 13:31

Daran, dass Du immer noch nicht mit Namensräumen umgehen kannst. Der Name ist in Deinem Modul nicht definiert. Nun überleg doch mal, wo der definiert sein könnte.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Samstag 17. Mai 2008, 14:44

Ich geb dir mal 'nen Tipp:

END ist eine Tkinter-Konstante.
Das Zitat mit der Beispielzeile setzt voraus, dass Tkinter mitttels Sternchen-Import importiert wurde. Das hast du anscheinend nicht gemacht und das ist auch gut so.
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Samstag 17. Mai 2008, 16:06

Ja ich habe es mit

Code: Alles auswählen

import Tkinter as tk


gemacht.
Aber ich muss ja jetzt wohl kaum die Eingabe von 1.0 bis tk.END auslesen oder?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Samstag 17. Mai 2008, 16:20

nightm4r3^ hat geschrieben:Aber ich muss ja jetzt wohl kaum die Eingabe von 1.0 bis tk.END auslesen oder?


:roll: Versteh ich nicht? Ist dir das zu viel Arbeit oder wie ist die Frage gemeint?
Ansonsten - falls es nicht zu viel Arbeit ist: Probier es doch mal ...
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Samstag 17. Mai 2008, 16:29

ja jetzt kommt:

Code: Alles auswählen

TypeError: get() takes exactly 1 argument (3 given)


tut mir ja leid wenn ich mich so dumm anstell
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Samstag 17. Mai 2008, 16:53

nightm4r3^ hat geschrieben:tut mir ja leid wenn ich mich so dumm anstell


So schlimm ist das nicht, so lange du nicht aufgibst ...

Die Fehlermeldung deutet darauf hin, dass du mit "Textfeld" (OP) kein Text-Widget meinst (das dachte ich und darauf bezog sich die bisherige Hilfe), sondern ein Entry-Widget. Da ein Entry-Widget nur eine Zeile umfasst, braucht get() da auch keine Parameter.

Also: Versuch es damit.
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Samstag 17. Mai 2008, 16:59

Also ich erläutere mal gerade mein Problem komplett:

Ich bin gerade dabei ein Programm zum chiffrieren zu schreiben. Das wäre auch alles gar kein Problem, aber in ein Entry Feld einen Text einzugeben der mehrere Zeilen lang ist, ist sehr unschön. Deshalb dachte ich mir mach ich das mit einem Text Feld.

So das ist das Problem. Wie kann ich nun diese Feld auslesen und in einer Definition weiterverrarbeiten.
BlackJack

Beitragvon BlackJack » Samstag 17. Mai 2008, 17:36

Bei einem `Text`-Widget dürftest Du aber die Fehlermeldung nicht bekommen, denn dessen `get()` nimmt drei Argumente entgegen:

Code: Alles auswählen

In [53]: tk.Text.get?
Type:           instancemethod
Base Class:     <type 'instancemethod'>
String Form:    <unbound method Text.get>
Namespace:      Interactive
File:           /home/bj/lib-tk/Tkinter.py
Definition:     tk.Text.get(self, index1, index2=None)
Docstring:
    Return the text from INDEX1 to INDEX2 (not included).
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Sonntag 18. Mai 2008, 10:44

ich versteh es ja selber nicht. ich habe ein Textfeld mit dem Namen "text" und wenn ich es mit text.get(1.0, END) auslesen will, kommt ein Name Error.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 18. Mai 2008, 13:13

Naja, zu ``tk.END`` wurde dir ja schon geraten...
My god, it's full of CARs! | Leonidasvoice vs Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Beitragvon nightm4r3^ » Sonntag 18. Mai 2008, 13:36

ja und wenn ich es mit tk.END mache, dann kommt der attribute Fehler.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 18. Mai 2008, 13:47

Und wenn du uns noch den ganzen Traceback zeigst, dann könnte man mit deiner Aussage vielleicht auch noch etwas anfangen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder