[linux-l] TypeError:'str' object is not callable (Python)=>skript
Olaf Radicke
olaf_rad at gmx.de
Mi Jun 5 22:33:08 CEST 2002
On Wed, Jun 05, 2002 at 08:29:41PM +0000, Olaf Radicke wrote:
> Hi!
>
> Ich sitze jetzt schon acht Stunden an mein Problem.
>
> Ich hänge mein Skript an die Mail.
...vergessen!
-------------- nächster Teil --------------
# das widerholen der menue-listen integriert und Kommentare eingfügt
# Curser funktioniert, löschen funktioniert, Drucken und Speichen
# funktioniert.
# "Speichern unter..." wird impementiert
import shelve
import string
import Tkinter
import posix
from Tkconstants import *
schriftart = "Arial 22 "
tk = Tkinter.Tk()
haubt_frame = Tkinter.Frame(tk)
haubt_frame.pack(side=BOTTOM, fill=X)
frame_oben = Tkinter.Frame(haubt_frame, relief=RIDGE, borderwidth=2)
frame_oben.pack(fill=BOTH,expand=1, padx=5, pady=4)
label_oben=Tkinter.Label(frame_oben)
label_oben["text"] = "Kleinbuchstaben"
label_oben.pack(side=LEFT, expand=1, padx=5, pady=4)
frame_mitte = Tkinter.Frame(haubt_frame, relief=RIDGE, borderwidth=2)
frame_mitte.pack(fill=BOTH, expand=1, padx=5, pady=4)
text=Tkinter.Text(frame_mitte,
width=60,
height=20,
background="white",
borderwidth=3)
text.pack()
frame_unten = Tkinter.Frame(haubt_frame, relief=RIDGE, borderwidth=2)
frame_unten.pack( fill=BOTH,expand=1, padx=5, pady=4)
label_unten=Tkinter.Label(frame_unten)
label_unten.pack(side=LEFT, expand=1, padx=5, pady=4)
label_oben.configure(font=schriftart)
label_unten.configure(font=schriftart)
text.configure(font=schriftart)
text.focus_set()
# einer reie fon listen für das menue wir geschaffen
kleinbuchstaben = ["a","b","c","d","e","f","g","h","i","j","k","l","m",
"n","o","p","q","r","s","t","u","v","w","x","y","z"]
kleinbuchstaben_anzahl = len(kleinbuchstaben)
grossbuchstaben = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
grossbuchstaben_anzahl = len(grossbuchstaben)
sonderzeichen = ["Leerzeichen","Neue_Zeile",".",",",":","!","?","ß","ö",
"Ö","ü","Ü","ä","Ä","=","(",")","§","$","%","&","\\",
"/",";","-","+",">","<","]","[","\'","#","*","|","{","}"]
sonderzeichen_anzahl = len(sonderzeichen)
zahlen = ["0","1","2","3","4","5","6","7","8","9"]
zahlen_anzahl = len(zahlen)
funktionen = ["Cursor nach rechts","Cursor nach links","Cursor runter",
"Cursor hoch","Links löschen","Rechts löschen","Drucken",
"Speichen","Speichern unter...","...Datei öffnen","E-mail"]
funktionen_anzahl = len(funktionen)
menu_listen = [kleinbuchstaben,grossbuchstaben,sonderzeichen,zahlen,funktionen]
# Hilfsliste für die Anzeige
menu_listen1 = ("Kleinbuchstaben","Grossbuchstaben","Sonderzeichen","Zahlen",
"Funktionen")
menu_listen1_anzahl = len(menu_listen1)
####################################################################
# hier werden die metoden und eigenschaften für die auswahl in dem #
# menue definiert #
####################################################################
class Menue:
def __init__(self,name):
self.name=name
# speichert die ausgewählte Menuliste
self.die_liste = 0
# speichert den ausgewählen Menupunkt
self.das_element=0
# speichert in welcher Menueebene ich mich befinde
self.zustand = 0
# speichert ob schon ein Menuepunkt ausgewählt wurde und
# jetzt in das Haubtmenue zurüchgesprungen werden muss
self.klick = 0
def auswahl(self):
#label_unten["text"] = "*** ***"
# erste Menue-Ebene
if self.zustand == 0:
self.die_liste = self.die_liste + 1
# am Ende der Liste von Vorne anfangen
if self.die_liste >=menu_listen1_anzahl:
self.die_liste = 0
label_oben["text"] = menu_listen1[self.die_liste]
elif self.zustand == 1:
# das Selbe mit dem Ende der Liste der zweiten Ebene. Mit
# der Prüfung um welche List es sich handelt um die Länge
# der Liste zu berüchsichtigen
self.das_element += 1
if self.die_liste == 0 and self.das_element >= kleinbuchstaben_anzahl:
self.das_element = 0
elif self.die_liste == 1 and self.das_element >= grossbuchstaben_anzahl:
self.das_element = 0
elif self.die_liste == 2 and self.das_element >= sonderzeichen_anzahl:
self.das_element = 0
elif self.die_liste == 3 and self.das_element >= zahlen_anzahl:
self.das_element = 0
elif self.die_liste == 4 and self.das_element >= funktionen_anzahl:
self.das_element = 0
label_oben["text"] = menu_listen[self.die_liste][self.das_element]
# verlassen der ausgewählen Funktion
elif self.zustand == 2:
self.die_liste = 0
self.das_element = 0
self.zustand = 0
label_oben["text"] = menu_listen1[self.die_liste]
def bestaetigen(self):
# Listenelement der ersten Menue-Ebene auswählen
if self.zustand == 0:
self.das_element = 0
label_oben["text"] = menu_listen[self.die_liste][self.das_element]
self.zustand = 1
# Listenelement der ersten Menue-Ebene auswählen
elif self.zustand == 1:
# ist die Liste mit den Funktionen ausgewählt worden?
if self.die_liste == 4:
self.zustand = 2
# ...Nein, ist sie nicht...
elif self.die_liste <= 3:
Texteinfuegen.einfuegen()
self.die_liste = 0
self.das_element = 0
self.zustand = 0
label_oben["text"] = menu_listen1[self.die_liste]
if self.zustand == 2:
# rufe die passensen funktionen auf #
Sonderfunktionen.aufruf()
# Achte darauf das dr Curor immer im sichbaren Bereich bleibt
self.cursor_index=text.index(INSERT)
text.see(self.cursor_index)
#####################################################################
# Ende der difinition der Klasse "Menue" #
#####################################################################
# die instanz für die menue-navigation und das schreiben wird aufgerufen
Menu_bewegung=Menue("schnick")
#####################################################################
# Difintion der Klasse "Funktions_menue" #
#####################################################################
class Funktions_menue:
def __init__(self,name):
self.name=name
self.das_element=0
self.cursor_index =0
self.cursor_index_split=[1]
self.int_index=0
self.alter_index=0
self.transport=0
self.text_ausgabe=""
self.datei_handel=""
self.datei_name=""
def aufruf(self):
self.das_element=Menu_bewegung.das_element
# was soll passieren wenn funktion xy aus Menue "Funktionen"
# aufgeruffen wird...
if self.das_element == 0:
# cursor nach rechts
self.cursor_index=text.index(INSERT)
self.transport= self.cursor_index + "+1 chars"
text.mark_set(INSERT,self.transport)
elif self.das_element == 1:
# cursor nach links
self.cursor_index=text.index(INSERT)
self.transport= self.cursor_index + "-1 chars"
text.mark_set(INSERT,self.transport)
elif self.das_element == 2:
# cursor nach unten
self.cursor_index=text.index(INSERT)
self.transport= self.cursor_index + "+1 lines"
text.mark_set(INSERT,self.transport)
elif self.das_element == 3:
# cursor nach oben
self.cursor_index=text.index(INSERT)
self.transport= self.cursor_index + "-1 lines"
text.mark_set(INSERT,self.transport)
elif self.das_element == 4:
# links löschen
self.cursor_index=self.alter_index=text.index(INSERT)
self.cursor_index_split = string.split(self.cursor_index,".")
self.int_index = int(self.cursor_index_split[1])
self.int_index -= 1
if self.int_index <= -1:
# sind wir am anfang der Zeile dann...
self.int_index = int(self.cursor_index_split[0])
self.int_index -= 1
self.cursor_index_split[0] = str(self.int_index)
self.cursor_index = ".".join([self.cursor_index_split[0],self.cursor_index_split[1]])
self.transport= self.cursor_index + "lineend"
text.delete(self.transport,self.alter_index)
else:
# sonst...
self.cursor_index_split[1] = str(self.int_index)
self.cursor_index = ".".join([self.cursor_index_split[0],self.cursor_index_split[1]])
text.delete(self.cursor_index,self.alter_index)
elif self.das_element == 5:
# rechs löschem
self.alter_index = self.cursor_index = text.index(INSERT)
self.transport= self.cursor_index + "+1 chars"
text.delete(self.alter_index, self.transport)
elif self.das_element == 6:
# drucken
self.text_ausgabe = text.get(1.0, "end")
self.datei_handel = open("./ot-tmp","w")
self.datei_handel.write(self.text_ausgabe)
self.datei_handel.close()
posix.system("lpr ./ot-tmp")
elif self.das_element == 7:
# speichern
self.text_ausgabe = text.get(1.0, "end")
self.datei_handel = open("./ot-tmp","w")
self.datei_handel.write(self.text_ausgabe)
self.datei_handel.close()
elif self.das_element == 8:
# speichern unter...
self.datei_name= text.get("1.0", "1.0 lineend")
text.delete("1.0", "1.0 lineend")
self.text_ausgabe = text.get(1.0, "end")
self.datei_handel = open(self.datei_name,"w")
self.datei_handel.write(self.text_ausgabe)
self.datei_handel.close()
label_unten["text"] = "Speichern unter: " + self.datei_name
elif self.das_element == 9:
# öffnen
self.datei_name= text.get("1.0", "1.0 lineend")
text.delete("1.0", "1.0 lineend")
self.datei_handel = open(self.datei_name,"r")
self.text_ausgabe = self.datei_handel.read(300)
text.insert("2.0",self.text_ausgabe)
self.datei_handel.close()
label_unten["text"] = "Es wurde geöffnet: "
elif self.das_element == 8:
# e-mail
label_unten["text"] = "Noch nicht Implementiert!! -Sorry!"
#####################################################################
# ende der definiton der Klasse "funktions_menue" #
#####################################################################
# die Instanz für die funktionen des Menue werden aufgeruffen
Sonderfunktionen=Funktions_menue("plock")
#####################################################################
# Definiton der Klasse "Schreiben" um die ausgewählten Buchstaben #
# in das Textfeld zu übertragen #
#####################################################################
class Schreiben:
def __init__(self,name):
# Die Sonderzeichen werden für den internen programmgebrauch doppelt
# geführt weil z.B. der Zeilenumbruch intern als "\n" dargestellt
# wird.
self.cursor_index=0
self.sonderzeichen = [" ","\n",".",",",":",
"!","?","ß","ö","Ö","ü","Ü","ä","Ä","=",
"(",")","§","$","%","&","\\","/",";","-",
"+",">","<","]","[","\'","#","*","|","{",
"}"]
self.menu_listen = [kleinbuchstaben,grossbuchstaben,
self.sonderzeichen,zahlen]
self.letztes_wort = ""
self.letztes_zeichen = ""
def einfuegen (self):
self.cursor_index=text.index(INSERT)
self.letztes_zeichen = self.menu_listen[Menu_bewegung.die_liste][Menu_bewegung.das_element]
#print self.letztes_zeichen + "eingegebenst zeichen\n"
# wurde das word bendet, speichere es.
if self.letztes_zeichen == " " or self.letztes_zeichen == "\n":
Word_vorschlag.speichern(self.letztes_wort)
text.insert(self.cursor_index,self.letztes_zeichen)
else:
text.insert(self.cursor_index,self.letztes_zeichen)
# auslesen was bisher geschrieben wurde
# um ein Word vozuschlagen
self.letztes_wort = text.get(self.cursor_index +"wordstart",self.cursor_index +"wordend")
print self.letztes_wort +" wortvorschlat"
Word_vorschlag.vorschlag(self.letztes_wort)
print self.letztes_wort +" wortvorschlat"
#####################################################################
# Ende der deviniton von "Schreibe" #
#####################################################################
# Die instans für das Texteinfügen wird auferufen
Texteinfuegen=Schreiben("schnack")
#####################################################################
# Begin Klasse Vorschlag #
#####################################################################
class Vorschlag:
def __init__(self, name):
#self.geschriebenes = []
self.name = name
self.geschriebenes=""
self.fertiges_word=""
#self.db={}
#self.db_keys = []
#self.zaehler = 0
self.vorschlag = ""
#self.schluessel =""
def vorschlag (self, geschriebenes):
#self.geschriebenes = geschriebenes
print "shitt" #self.geschriebenes #+"<=Vorschlag"
# self.db = shelve.open("./myshelve","r")
# self.db_keys = self.db.keys()
# self.zaehler = 0
# self.vorschlag = ""
# self.schluessel = ""
# for self.schluessel in self.db_keys:
#print "self.db_keys"
# die schlüssel in der Datenbank durchlaufen
# if self.schluessel.startswith(self.geschriebenes[0:6]):
# suche nach schlüsseln, die mit den gleichen buchstaben
# beginnen wie das geschriebene Wort
#self.zaehler += 1
#print self.zaehler
# if self.zaehler > 1:
# wenn dies nicht das erste Element der Liste ist...
# if self.db[self.vorschlag] < self.db[self.schluessel]:
# sollte das nächste Wort was passt, eine
# höhere warscheinlichkeit haben, nehme das...
# self.vorschlag = self.schluessel
# else:
# dies ist der erste durchlauf...
# self.vorschlag = self.schluessel
# label_unten["text"] = "Wollen sie schreiben: " + self.vorschlag +" ?"
# print self.vorschlag #+" <=vorschlag"
# self.db.close()
# print "\n kein fehler"
def speichern (self,fertiges_word):
#fertiges_word):
self.fertiges_word = fertiges_word
db = shelve.open("./myshelve")
wort_laenge = len(self.fertiges_word)
if wort_laenge > 6:
# ist das Wolt länger als 6 Buchstaben speicher es.
if db.has_key(self.fertiges_word):
# ist das Wort schon mal gespeichert worden...
db[self.fertiges_word] += 1
else:
# das Word zum ersten mal speichern
db[self.fertiges_word] = 1
db.close()
print self.fertiges_word +" <=speichern"
#####################################################################
# Ende Klasse Vorschlag #
#####################################################################
Word_vorschlag=Vorschlag("ploeff")
# definton der Maus-Bindung
def linke_maustaste(ev):
Menu_bewegung.bestaetigen()
def rechte_maustaste(ev):
Menu_bewegung.auswahl()
tk.bind("<Button-1>",linke_maustaste)
tk.bind("<Button-3>",rechte_maustaste)
tk.mainloop()
Mehr Informationen über die Mailingliste linux-l