Bestimme Zeichen in GtkEntry() verbieten [gelöst]

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Chrispy
User
Beiträge: 37
Registriert: Montag 10. September 2007, 22:43

Donnerstag 8. November 2007, 08:46

Weiss jemand ob es eine Funktion zum verbieten bestimmer Zeichen in Textfeldern gibt? z.B. Leerzeichen und Slashes sollen nicht eintippbar sein. Danke im Vorraus.
Zuletzt geändert von Chrispy am Dienstag 19. Februar 2008, 14:38, insgesamt 1-mal geändert.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Donnerstag 8. November 2007, 10:02

[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Chrispy
User
Beiträge: 37
Registriert: Montag 10. September 2007, 22:43

Donnerstag 8. November 2007, 11:39

Dafür bin ich zu blöd. Ich schreibe meine Pygtk-Programme anders und die UI in Glade, bekomms aber nicht hin, umzudenken.

Gibt's nicht noch ne andere Methode, die auch ich begreife? :?:
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Freitag 11. Januar 2008, 14:12

Chrispy hat geschrieben:Dafür bin ich zu blöd. Ich schreibe meine Pygtk-Programme anders und die UI in Glade, bekomms aber nicht hin, umzudenken.

Gibt's nicht noch ne andere Methode, die auch ich begreife? :?:
Lies doch den Text jedesmal aus und lösche alle unerwünschten Zeichen :mrgreen: :mrgreen: :mrgreen:
stam
User
Beiträge: 7
Registriert: Freitag 11. Januar 2008, 20:12
Kontaktdaten:

Freitag 11. Januar 2008, 20:31

eigentlich müsste es so gehen:

Code: Alles auswählen

# jedes Mal, wenn Text in myentry eingegeben wird, triggere on_insert
myentry.connect('insert_text', on_insert)

def on_insert(entry, text, length, *args):
    not_wanted_list = ['/', ' ']    # Liste der ungewollten Zeichen
    if text in not_wanted_list:
        entry.emit_stop_by_name('insert_text') # verhindert, dass der eingegebene Text ins Textfeld eingetragen wird
Falls dein Fenster in einer Klasse definiert wurde, vergiss nicht, die ganzen "self"s einzufügen.

Das funktioniert aber nicht, falls ein größerer Textblock gepasted wird, denke ich...
Chrispy
User
Beiträge: 37
Registriert: Montag 10. September 2007, 22:43

Dienstag 19. Februar 2008, 14:30

Ja klappt. Danke :D
zerghase
User
Beiträge: 15
Registriert: Samstag 19. November 2005, 21:15
Wohnort: München

Dienstag 19. Februar 2008, 19:17

Code: Alles auswählen

# jedes Mal, wenn Text in myentry eingegeben wird, triggere on_insert
myentry.connect('insert_text', on_insert)

def on_insert(entry, text, length, *args):
    not_wanted_list = ['/', ' ']    # Liste der ungewollten Zeichen
    for c in not_wanted_list:
        if c in text:
            entry.emit_stop_by_name('insert_text')
            break
So sollte es auch tun wenn längere Strings eingefügt werden.
Antworten