Textfelder auslesen

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

Tut mir leid aber leider Falsch verstanden^^

Es handelt sich hier um eine Ceasar Verschlüsselung. Es ist erst sozusagen inder "beta" Phase, zuerst soll man in das Entry Widget die Zahl eingeben um wie viele Zeichen der Buchstabe verschoben werden soll, und in das Text Widget der zu verschlüsselnde Text. In einem neu erscheinendem Textfeld, soll dann der Text ausgegeben werden.

Beispiel:

Entryfeld: 2
Textfeld: Hallo
Neues Textfeld: Jcnnq


PS: versch=Verschiebung ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

nightm4r3^ hat geschrieben:was soll ich machen? wieso passt die net zum code
Die Zeile die da angemängelt wird ist:

Code: Alles auswählen

ausgabe=tk.Text(root, text=verschluesseln(text.get(), versch.get()), width=50, height=20) 
In dem von dir gezeigtem Code kommt diese Zeile gar nicht vor!

Stattdessen hast du so eine Zeile:

Code: Alles auswählen

ausgabe=tk.Text(root, text=verschluesseln(text.get(1.0, tk.END), versch.get()), width=50, height=20)
Also wie erwartest du, dass man dein Problem löst, wenn du selbst noch zusätzliche Probleme machst, indem du entweder den falschen Code oder die falsche Exception postest?!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

entschuldigung ich habe den falschen fehler gepostet

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "F:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
    return self.func(*args)
  File "F:\Python25\Python Programme(self)\verschluesseln.py", line 26, in chiff
    ausgabe=tk.Text(root, text=verschluesseln(text.get(1.0, tk.END), versch.get()), width=50, height=20)
  File "F:\Python25\Python Programme(self)\verschluesseln.py", line 9, in verschluesseln
    laenge=len(text.get(1.0, tk.END))
AttributeError: 'str' object has no attribute 'get'
Es kommt dieser Fehler
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo nightm4r3^

Ich bin leider kein Verschlüsselungs-Experte Hi!

Kannst Du bitte Deine Funktion 'verschluesseln'
einmal durch die folgende ersetzen und kontrol-
lieren was der am Ende der Funktion stehende
Befehl 'print chiffre' auf die Konsole ausgibt:

Code: Alles auswählen

def verschluesseln(text, versch):
	""" Verschlüsselungs-Algorithmus """
	
	#~~ Das Text-Widget liefert automatisch ein '\n' zur eingegebenen
	#   Textzeile mit. Das wird hier entfernt
	text = text.replace('\n','')
	
	#~~ Anzahl Zeichen des zu verschlüsselnden Textes
	laenge = len(text)
	
	text = text.upper()
	
	#~~ Modulo-Operator kann nur auf ganze Zahlen angewendet werden
	shift = int(versch)%26
	
	chiffre=''
	for i in range(0,laenge):
		if text[i]==' ':
			chiffre+=' '
		elif 65<=ord(text[i]) + shift<=90:
			chiffre += chr(ord(text[i])+int(versch))
		elif ord(text[i])+ shift >90:
			chiffre += chr(ord(text[i])+int(versch)-26)
		else:
			chiffre += chr(ord(text[i])+int(versch)+26)
	print chiffre
Gruss wuf :wink:
Take it easy Mates!
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Code: Alles auswählen

JCNNQ
Exception in Tkinter callback
Traceback (most recent call last):
  File "F:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
    return self.func(*args)
  File "F:\Python25\Python Programme(self)\verschluesseln.py", line 37, in chiff
    ausabe.place(x=410, y=70)
NameError: global name 'ausabe' is not defined
Also das Wort gibt er aus. Aber wo der Fehler jetzt liegt, weiß ich auch noch nicht^^
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo nightm4r3^

Die Fehlermeldung sagt:

Python findet den Name 'ausabe' nicht.
Der Grund ist dieser Name hast Du falsch
geschrieben. Du musst ihn auf ausgabe
umändern.

Der Fehlerhafte Namen befindet sich auf Zeile-37!

Viel Spass nightm4r3^ mit der Python & Tkinter-
Programmierung.

Gruss wuf :wink:
Take it easy Mates!
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

und dir vielen dank wuf. ich glaube nicht das ich ohne deine hilfe geschafft hätte^^

aber eine frage hät ich noch. und zwar gibt mir das programm jetzt den chiffrierten text in der idle aus. wie bekomm ich ihn jetzt aber in das 2. textfeld?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo nightm4r3^

Hier ist die Lösung für die Ausgabe des
verschlüsselten Textes:

Hänge am Schluss der Funktion 'verschluesseln'
unmittelbar nach dem Befehl 'print chiffre'
folgende Zeile an:

Code: Alles auswählen

return chiffre
Ersetze die Funktion chiff durch die folgende:

Code: Alles auswählen

def chiff():
	""" Ausgabe des verschlüsselten Textes """
	global text
	
	root.geometry('900x400')
	
	ausgabe = tk.Text(root,
		width  = 50,
		height = 20
		)
	ausgabe.place(x=500, y=100)
	
	chiffre   = verschluesseln(text.get(1.0, tk.END),versch.get()),
	ausgabe.insert(tk.END,chiffre)

Gruss wuf und good luck :wink:
Take it easy Mates!
Antworten