
einfach mal in die idle einfügen und mal rumstöbern...
es macht ja nix böses, sondern will einfach nur gebetat werden

das schönste ist: zu sagen:
"den quelltext habt ihr ja!"
nun gut, BlackJack, du hast ja ne astreine
analyse zum schachspiel gemacht, das wirst du DAS kleine bisschen doch
auch noch schaffen, oder?




jeder andere sollte sich aber bitte, bitte auch angesprochen fühlen
und diejenigen, die noch nich so viel python können:
einfach nur den code ausführen und mir sagen, was euch an der
optischen umsetzung nich gefällt, wenn ihr keine lust habt, euch in diesem
code zu verlaufen (PS: geht mir selbst so!

Code: Alles auswählen
# -*- coding: cp1252 -*-
#***************************************************************************************************************************
#
# Dieses Programm Ist Nich Schädlich
# also braucht ihr euch nicht den kopf darüber zu zer-
# brechen, was das alles bedeutet und alles erst einmal auf dem
# PC umsetzen. PS: ich weiß, dass ich eine
# UnMögliche Art Besitze Zu Programmieren - SORRY
# Dieses Programm verschlüsselt einfach nur nen paar lustige texte - viel spaß beim testen - Hannes-Spz
#
### FUNKTIONS-LISTING:
# FUNKTION STATUS BENUZT ERKLÄRUNG
#---------------------------------------------------------------------------------------------------------------------------
# INV (ok) sz invertieren jedes step-'sten zeichens in text
# CODE (ok) sz 256 zeichen-versch-MAIN (hin u. zurück)
# VERSCH (ok) sz schiebung um za-hl des text-es
# _sonderzeichentest (ok) ret 'positiv', wenn sonderzeichen in text enthalten sind, else: ret 'negativ'
# _codierung (ok) EVENT start des codiervorganges
# _decodierung (ok) EVENT start des decodiervorganges
# _vertauschen (ok) EVENT vertauscht beide seiten (textfelder) miteinander (für benutzerfreundlichkeit =)
# _invert_step (ok) EVENT öffnet einen mini-dialog zur eingabe einer zahl die als invert_step benutzt wird
# _info (ok) öffnet einen mini-dialog (tkMessageBox) zur anzeige des Gründers u. __VERSION__
# _widmung (ok) öffnet PopUp zur anzeige der entstehung dieses progs
# _hilfe (ok) öffnet PopUp zur anzeige der noch nicht vorhandenen Hilfe (siehe verbesserungen)
# _j (de) enthält exec-funktion für _debugmode
# _debugmode (ok) enthält zum größten teil noch nicht festgelegte features
# _console (ok) EVENT start Console()
# _deaktivierung (ok) EVENT ... bei 'ein cw verwenden' wird das 2. fenster deaktiviert... usw.
#
# (ok) = funktioniert + im einsatz
# (ff) = funktioniert nicht ganz (fehler meist extern)
# (FF) = funktioniert nicht (muss vollständig neu geschrieben werden)
# (de) = funktioniert aber
# nicht im einsatz (auskommentiert)
#
# sz = beruht auf dem test auf sonderzeichen
# EVENT = könnte auch durch tastatur aufgerufen werden
#
#***************************************************************************************************************************
#
# wenn man im rechten feld "_debug1" oder _debug und am ende eine zahl, die in der _debugmode-fkt aufgeführt ist,
# dann im Menu auf Hilfe klickt und dann gleich nochmal auf den gleichnamigen unterpunkt, so wird ein neues menu frei-
# gestellt, dass die ganzen "normalsterblichen"-user wie meine paar-n-sechzig-jährige oma ja nicht zu sehen brauchen...
#
# im linken feld einen text eingeben, dann F5 (für die eine richtung der verschlüsselung)
# drücken (oder im menu durchwuseln) und der ver-(oder ent-)schlüsselte text müsste im rechten feld (self.neu)
# zu sehen sein...
# nun noch unten auf "texte vertauschen" klicken oder alt+t drücken damit sich die beiden seiten vertauschen
# und F6 drücken (oder wieder aufs menu zugreifen) um in die andere richtung zu verschlüsseln...
#
# dabei muss aber aufgepasst werden, dass
# -der checkbutton "sonderzeichen vermeiden" bei beiden malen den selben zustand hat
# -die selben codewörter (1.+2. entry) verwendet wurden
# -die selbe verschiebungszahl (3. entry) verwendet wurde
# -die selbe invertierungs-einstellung besteht
# (Mal ganz kurz das prinzip des invertierens:
# invertieren heißt: "ich drehe immer alles um..."
# Regel: invertierte_zahl = maximaler_wert - zu_invertierende_zahl
# Bsp: 7-2=5; 7-5=2 so einfach isses!
# gut, und wenn ich nun vor mir ein fenster hab, wo "invert_step" steht, dann weiß ich einfach,
# dass der programmierer zu faul für den dt. begr. war und dich nur fragen will, das wie-vielte
# zeichen du aus deinem originaltext(links) immer anhand des ASCII-Codes invertieren willst)
#
# in der mitte der mitte sollte eigentlich das bildchen "tai-ku.*" stehen, dass man findet,
# wenn man den dist-ordner durchsucht (von py2exe erschaffen, bild hatte ich aber bisher nur, wenn ich
# ein tk-programm zu einer exe umwandle)... nehmt einfach eins, dass euch gefällt (nicht zu groß, versteht sich ;)
#
# die Klasse war eigentlich extern und öffnet nur ein fenster mit 3 buttons und nem scrolled text
# alternativ kann man sicherlich auch das Message-Widget aus Tk nehmen
#
# zur unterteilung meines programmes steht an der rechten seite im vollbildmodus der IDLE nach den "*"chen das thema
# bei main-fkts sind die fkts der verschlüsselung, alle anderen stehen meißt unter essentielle-fkts
#
# Also Sonderzeichen Werden Alle Zeichen Definiert Für Die Gilt:
# 0 <= ord(Zeichen) < 32
#
__ENTSTEHUNG__=("""Geschichte, wie das ganze entschtanden ist...\n und das ganze als tupel""",)#das komma am ende is wichtig
__VERBESSERUNGEN__="""...
1.) Bessere Hilfe
2.) PopUp(typ=..) belegen (für ScT;L;I)
3.) geschicktere Console
4.) Test auf Betriebssystem
5.) Reaktion auf Commandozeilenparameter
(für DOS-window)
6.) Fehlermeldungs-Erklärung
7.) Reaktion auf debugmode(sourcecode) in Console
8.) Verwendung von Pmw (python-mega-widgets)
...
"""
__INFO__="der db-mode wurde derzeitig an keine kunktion gebunden..."
__VERSION__="6.1.26.0 "
__ABLAUF__="(INVERTIEREN), (VERSCHIEBEN), CODIEREN, (CODIEREN)"
__SOURCECODE__="habs mit __sourcecode__=(file(...,...).read()) probiert, kommt aber zeilenverschiebung bei raus..."
dbm=0 #gucken, ob der Debugmode schon aktiviert wurde, wird aber - glaub ich - doppelt verwendet...
arg="" #wollte mal ne console basteln, um auf argumente einer verknuüpfung der dazugehörigen exe zu reagieren, der string
# steht dann in der titelleiste
#********************************************************************************************************************IMPORTs
import sys
from Tkinter import *
from ScrolledText import ScrolledText
from tkMessageBox import *
class PopUp:
"""PopUp( text = ("first arg", "second arg",...) ) -> open window"""
def __init__(self,**options):
"""Hilfe-Menu mit 3 Buttons in einem LabelFrame(unbeschriftet) und einem ScrolledText
texte: tupel oder liste mit strings zum einfügen in den ScrolledText
title: self.root.title(title): name des fensters
icon: self.root.wm_iconbitmap(icon)
clean_window: ob bei jeder "anzeige()" der vorherige text gelöscht werden soll
typ: momentan nur "ScT" für ScrolledText möglich, alle anderen möglichkeiten wurden aus platzgründen entfernt
"""
### benutzereinstellungen abrufen
self.options=dict(master=None, texte=(), title="", icon=None, clean_window=0, typ="ScT")
self.options.update(options)
self.tu=self.options["texte"]# tu - wie tupel
### festlegung des masters
master=self.options["master"]
if master: self.root=Toplevel(master)
else: self.root=Tk()
### config des masters
self.root.title(self.options["title"])
self.root.wm_iconbitmap(self.options["icon"])
self.root.wm_positionfrom("user")
self.ScH=self.root.winfo_screenheight()
self.ScW=self.root.winfo_screenwidth()
self.root.wm_geometry("%sx%s+%s+%s" % (str(self.ScW/3), str(self.ScH/3), str(self.ScW/3), str(self.ScH/3) ) )
self.i=0# sowas wie zähler, an welcher stelle von "texte" angefangen werden soll
self.c_w=self.options["clean_window"]
###widgets
self.sc=ScrolledText(self.root, wrap="word", width=int(self.ScW/20), height=int(self.ScH/50))
self.sc.grid(column=0, columnspan=3, row=1, sticky=N+S+W+E)
self.lf=LabelFrame(self.root,width=200,height=20)
self.lf.grid(column=0,columnspan=3,row=2,sticky=N+S+E+W)
### namen setzen sich meißt zusammen aus art + aktion
self.bu_weiter=Button(self.lf,text=" -> ",width=15,relief="flat",command=self.anzeige)
self.bu_weiter.grid(column=2,row=0)
self.bu_cancel=Button(self.lf,text=" XX ",width=15,relief="flat",command=self.root.destroy)
self.bu_cancel.grid(column=1,row=0)
self.bu_back=Button(self.lf,text=" <- ",width=15,relief="flat",command=self.back)
self.bu_back.grid(column=0,row=0)
# ausführen der "back"-fkt. verhindern
self.bu_back["state"]="disabled"
### erster durchlauf/erste anzeige
self.anzeige()
self.root.mainloop()
def anzeige(self):
"""nächstes element aus dem tupel/liste in das scrolledtext eingefügt"""
if self.c_w==1:
self.sc.delete(0.0, END)
self.sc.insert(END, self.tu[self.i]+"\n")# "\n" falls DOCH nicht gelöscht werden soll
### verhalten der buttons festlegen
if self.i==0:
self.bu_back["state"]="disabled"
elif self.i==1:
self.bu_back["state"]="normal"
self.i+=1
if len(self.tu)==self.i:
self.bu_weiter.config(text="Ende",command=self.root.destroy)
def back(self):
"""funktion für "back-button" ; ( .goto(seite) find ich aber besser )"""
#1. seite wird zurückgesetzt
#2. 3. button soll andere beschriftung erhalten (sieht besser aus...)
#3. anzeige der seite, auf die self.i zurückgesetzt wurde
self.i-=2
if self.bu_weiter["text"]=="Ende":
self.bu_weiter.config(text=" -> ",command=self.anzeige)
self.anzeige()
def goto(self,i):
"""seite "i" anzeigen"""
self.i=i
self.anzeige()
#############*Hauptprogramm******************************************************************************************_256bit
class _256bit:
def __init__(self,**opts):
"""Hauptfenster:
3-spaltig #hätte sonst nicht mit dem maximieren geklappt/hätte sich verschoben
-mittlerer frame ist nochmal unterteilt"""
# Variablen zum anzeigen in den menus
self.__ABLAUF__=opts["ablauf"]
self.__ENTSTEHUNG__=opts["entstehung"]
self.__INFO__=opts["info"]
self.__VERBESSERUNGEN__=opts["verbesserungen"]
self.__VERSION__=opts["version"]
self.__SOURCECODE__=opts["s_code"]
#********************************************************************************************************ROOT.CONFIG
self.root=Tk()
self.root.wm_positionfrom("user")
self.ScH=self.root.winfo_screenheight()
self.ScW=self.root.winfo_screenwidth()
self.root.wm_geometry("%sx%s+%s+%s"%(str(self.ScW-(self.ScW/5))# fensterbreite = 1/5tel der bildschirmbreite
,str(int(self.ScH/1.8))# fensterhöhe = bildschirmhöhe:1,8
,str(self.ScW/9),str(self.ScH/7)# das fenster rel. zentral lagern
))
self.root.title(" 256-Zeichenverschlüsselung - v"+self.__VERSION__+"("+opts["arg"]+")")
### widgets**************************************************************************************************WIDGETS
# namen setzen sich meißt zusammen aus position(links,mitte,rechts) und art
self.l_frame=Frame(self.root)
self.m_frame=Frame(self.root)
self.r_frame=Frame(self.root)
self.l_frame.pack(side=LEFT,fill=BOTH,expand=1)
self.m_frame.pack(side=LEFT,fill=BOTH)
self.r_frame.pack(side=LEFT,fill=BOTH,expand=1)
Label(self.l_frame,text="Originaltext",height=1,relief="raised").pack(fill=X,anchor=N)
Label(self.m_frame,text="Codes",height=1,relief="raised").pack(fill=X,anchor=N)
Label(self.r_frame,text="(de)codiert:",height=1,relief="raised").pack(fill=X,anchor=N)
# ori=originaltext neu=neuer text
self.ori=ScrolledText(self.l_frame,width=(self.ScW/20),height=(self.ScH/30))
self.neu=ScrolledText(self.r_frame,width=(self.ScW/20),height=(self.ScH/30))
self.ori.pack(fill=BOTH,expand=1)
self.neu.pack(fill=BOTH,expand=1)
# [
self.dbm=0
self.zweipw=BooleanVar()# art des pw/cw's (True=zwei,False=eins)
self.verschiebung=BooleanVar()
self.invert_step=IntVar()
self.invert_step.set(2)
self.invertieren=BooleanVar()
self.sonderz=BooleanVar()
# ] Variablen
### mittleres frame
self.m1_frame=Frame(self.m_frame)#frame in der "m"- wie mitte
self.m2_frame=Frame(self.m_frame)
self.Label1=Label(self.m1_frame,text="1. Codewort:")
self.Label2=Label(self.m1_frame,text="2. Codewort:")
self.Label3=Label(self.m1_frame,text="Verschiebung um:")
self.En_1=Entry(self.m1_frame)
self.En_2=Entry(self.m1_frame)
self.En_3=Entry(self.m1_frame)
self.Label1.pack(anchor=N)
self.En_1.pack(anchor=N)
self.Label2.pack(anchor=N)
self.En_2.pack(anchor=N)
self.Label3.pack(anchor=N)
self.En_3.pack()
self.l1=Label(self.m_frame,text="\n")
self.l1.pack(fill=BOTH,anchor=CENTER)
self.m1_frame.pack(fill=BOTH,anchor=CENTER)
### bildchen in der mitte ab einer gewissen auflösung (1024x768) des bildschirmes
### =)
if self.ScH>=768:
try:
Label(self.m_frame,text=" ").pack(fill=BOTH,anchor=CENTER)
self.l=Label(self.m_frame)
self.l.pack(fill=BOTH,anchor=CENTER)
self.p=PhotoImage(file=r".\Module\tai-ku.gif")
self.l["image"]=self.p
Label(self.m_frame,text=" ").pack(fill=BOTH,anchor=CENTER)
self.l["text"]=""
self.l1["text"]=""
except:
Label(self.m_frame,text="\n\n").pack(fill=BOTH,anchor=CENTER)
else:
Label(self.m_frame,text=" ").pack(fill=BOTH,anchor=CENTER)
self.l1.config(text=" ")
self.m2_frame.pack(fill=BOTH,anchor=CENTER)
Label(self.m_frame,text="\n\n\n").pack(fill=BOTH,anchor=CENTER)
self.invert_frame=Frame(self.m2_frame)
self.Cb_1=Radiobutton(self.m2_frame,text="codewort verwenden",variable=self.zweipw,value=False)
self.Cb_2=Radiobutton(self.m2_frame,text="zwei cws verwenden",variable=self.zweipw,value=True)
self.Cb_3=Checkbutton(self.m2_frame,text="zahlencw verwenden",variable=self.verschiebung,onvalue=True,offvalue=False)
self.Cb_4=Checkbutton(self.invert_frame,text="invertieren",variable=self.invertieren,onvalue=True,offvalue=False)
self.Cb_5=Checkbutton(self.m2_frame,text="Sonderzeichen vermeiden",variable=self.sonderz,onvalue=False,offvalue=True)
self.bu_invert_step=Button(self.invert_frame,text="edit",width=10,relief="groove")
self.bu_vertauschen=Button(self.m2_frame,text="Texte vertauschen",width=20,relief="groove")
self.Cb_1.pack(anchor=NW)
self.Cb_2.pack(anchor=NW)
self.Cb_3.pack(anchor=NW)
self.Cb_4.pack(side=LEFT)
self.bu_invert_step.pack(side=LEFT)
self.invert_frame.pack(anchor=NW)
self.Cb_5.pack(anchor=NW)
self.bu_vertauschen.pack(anchor=N)
self.bu_invert_step["command"]=self._invert_step
self.bu_vertauschen["command"]=self._vertauschen
### voreinstellungen********************************************************************************VOREINSTELLUNGEN
self.Cb_1.select()
self.Cb_5.select()
self.En_1.insert(END,"ente")
self.En_3.insert(END,"0")
self.En_3["state"]="disabled"
self.En_2["state"]="disabled"
self.ori.focus_force()
#***************************************************************************************************************MENÜ
self.menu=Menu(self.root,relief="raised",tearoff=0)
self.aktion=Menu(self.menu,tearoff=0,relief="raised")
self.aktion.add_command(label="codieren ... F5",underline=0,command=self._codierung)
self.aktion.add_command(label="decodierung ... F6",underline=0,command=self._decodierung)
self.aktion.add_separator()
self.aktion.add_command(label="Texte vertauschen Alt+T",underline=0,command=self._vertauschen)
self.aktion.add_separator()
self.aktion.add_command(label="beenden ... Alt+F4",underline=1,command=self.root.destroy)
self.einstellungen=Menu(self.menu,tearoff=0,relief="raised")
self.einstellungen.add_checkbutton(label="vorher invertieren",underline=0,variable=self.invertieren,\
onvalue=True,offvalue=False)
self.einstellungen.add_command(label="Invertierungs-Schritt",underline=0,command=self._invert_step)
self.einstellungen.add_separator()
self.einstellungen.add_checkbutton(label="Sonderzeichen vermeiden",variable=self.sonderz,\
onvalue=False,offvalue=True)
self.hilfe=Menu(self.menu,tearoff=0,relief="raised")
self.hilfe.add_command(label="Version",underline=0,command=self._info)
self.hilfe.add_command(label="Entstehung",underline=0,command=self._widmung)
self.hilfe.add_separator()
self.hilfe.add_command(label="Hilfe!!",underline=0,command=self._hilfe)
self.menu.add_cascade(menu=self.aktion,underline=0,label="Aktion")
self.menu.add_cascade(menu=self.einstellungen,underline=0,label="Einstellungen")
self.menu.add_cascade(menu=self.hilfe,underline=0,label="Hilfe")
#***********************************************************************************************************BINDINGs
self.root["menu"]=self.menu
self.root.bind("<F5>",self._codierung)
self.root.bind("<F6>",self._decodierung)
self.root.bind("<Alt_L><t>",self._vertauschen)
self.root.bind("<ButtonRelease>",self._deaktivierung)
self.root.bind("<Alt_L><c>",self._console)
#**************************************************************************************************************START
self.root.mainloop()
##
##### MAIN FKTs************************************************************************************************MAIN-FKTs
##
def INV(self,text,step,sz=True):
"""invertierungsfkt: jedes "step"te zeichen von "text" wird invertiert
sz beachten!"""
if step<=0: return text
else:
invertiert=""
if sz==True: null=0
else: null=32
for i in range(1,len(text)+1):
if i%step==0: invertiert+=unichr(255-(ord(text[i-1])-null))
else: invertiert+=text[i-1]
return invertiert
def CODE(self,zk="",code="",richtung=1,sz=True):
"""codierung von "zk"(zeichenkette) mit "code" in richtung "richtung"
sz beachten"""
### code wird auf länge der zeichenkette gebracht (voraussetzung für die quadratische chiffre!!)
### Bsp: Code="ente"; zk="erstes stückchen satz"
### Code="enteenteenteenteentee"
try:
if len(code)==0: return zk
if len(zk)==0: return "Bitte geben Sie einen Text ein."
while len(code)<len(zk):
code+=code
while len(code)>len(zk):
code=code[:-1]
ausgabe=""
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei 'CODE' in (main)")
if richtung==1:
try:
if sz==True: null=0
else: null=32
for i in range(len(zk)):
c=ord(zk[i])+ord(code[i])
if c>255: c-=(256-null)
ausgabe+=unichr(c)
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei 'CODE' in (r=1)")
elif richtung==2:
try:
if sz==True: null=0
else: null=32
for i in range(len(zk)):
c=ord(zk[i])-ord(code[i])
if c<null: c+=(256-null)
ausgabe+=unichr(c)
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei 'CODE' in (r=2)")
return ausgabe
def VERSCH(self,text,zahl,sz=True):
"""verschieben jedes zeichens von text um zahl mit option ob sonderzeichen(sz) erscheinen sollen"""
try:
if sz==True: null=0
else: null=32
neu=""
for i in range(len(text)):
c=ord(text[i])+zahl
while not null<=c<=255:
if c>255: c-=(256-null)
elif c<null: c+=(256-null)
neu+=unichr(c)
return neu
except:
schowerror("ERROR","Schwerwiegender aber erwarteter Fehler bei 'VERSCH'")
##
##### essentielle Funktionen***********************************************************************************norm.FKTs
##
def _sonderzeichentest(self,text):
"""testet den "text" auf sonderzeichen nach der definition oben
0 <= ord(Zeichen) < 32 True: positiv False: negativ"""
for i in text:
if ord(i)<32:
return 'positiv'
return 'negativ'
def _codierung(self,event=None):
"""codiert den text im linken ScrolledText-Widget(self.ori)"""
try:
test=self._sonderzeichentest(self.ori.get(0.0,END).rstrip())
if self.sonderz.get()==False:
if test=='positiv':
showinfo("Sonderzeichen","Es wurden Sonderzeichen im Originaltext gefunden.")
self.Cb_5.deselect()
self.sonderz.set(True)
text=self.ori.get(0.0,END).rstrip()
#beginn
if self.invertieren.get()==True: text=self.INV(text,self.invert_step.get(),sz=self.sonderz.get())
if self.verschiebung.get()==True: text=self.VERSCH(text,int(self.En_3.get()),sz=self.sonderz.get())
text=self.CODE(text,self.En_1.get().rstrip(),richtung=1,sz=self.sonderz.get())
if self.zweipw.get()==True: text=self.CODE(text,self.En_2.get().rstrip(),richtung=1,sz=self.sonderz.get())
#ende
self.neu.delete(0.0,END)
self.neu.insert(END,text)
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei '_codierung'")
def _decodierung(self,event=None):
"""decodiert den text im linken ScrolledText-Widget(self.ori)"""
try:
text=self.ori.get(0.0,END).rstrip()
#beginn
if self.zweipw.get()==True: text=self.CODE(text,self.En_2.get().rstrip(),richtung=2,sz=self.sonderz.get())
text=self.CODE(text,self.En_1.get().rstrip(),richtung=2,sz=self.sonderz.get())
if self.verschiebung.get()==True: text=self.VERSCH(text,-int(self.En_3.get()),sz=self.sonderz.get())
if self.invertieren.get()==True: text=self.INV(text,self.invert_step.get(),sz=self.sonderz.get())
#ende
self.neu.delete(0.0,END)
self.neu.insert(END,text)
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei '_decodierung'")
def _vertauschen(self,event=None):
"""vertauscht per alt+t die beiden texte (self.ori <--> self.neu)"""
a=self.neu.get(0.0,END).rstrip()
self.neu.delete(0.0,END)
self.neu.insert(END,self.ori.get(0.0,END).rstrip())
self.ori.delete(0.0,END)
self.ori.insert(END,a)
def _invert_step(self,e=None):
"""frage, wievieltes zeichen immer invertiert werden soll"""
class g:### Sonderfenster aufrufen!
def __init__(self,var,root):
try:
self.var=var
self.k=Tk(); Label(self.k,text="Den wievielten Buchstaben Ihres\n"+\
"Originaltextes wollen Sie immer invertieren?").pack()
self.e=Entry(self.k); self.e.pack()
self.e.focus_force()
self.k.title("invertieren?")
width,height=250,80
self.k.wm_geometry("%sx%s+%s+%s"%(str(width),str(height),\
str(root.winfo_screenwidth()/2-width/2),\
str(root.winfo_screenheight()/2-height/2))) # fenster zentrieren
bu=Button(self.k,text="OK",command=self.ok); bu.pack()
self.k.bind("<Return>",self.ok)
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei '_invert_step' in (main)")
def ok(self,event=None):# auf knopf drücken und das fenster schließt sich!
try:
if self.e.get()!="":
self.var.set(int(self.e.get()))
except:
showerror("ERROR","Schwerwiegender aber erwarteter Fehler bei '_invert_step' in (.ok)")
self.k.destroy()
g(self.invert_step,self.root)
##
##### menu definition******************************************************************************************MENÜ-FKTs
##
def _info(self):
showinfo("version...","""ASCII-Verschlüsselung Version: """+self.__VERSION__+
"""\n\nby Johannes Stoye""")
def _widmung(self):
PopUp(master=self.root,texte=self.__ENTSTEHUNG__,title="Entstehung dieses Programmes",clean_window=1)
def _hilfe(self):
text=self.neu.get(0.0,END).rstrip().lower()
if text.startswith("debug") or text.startswith("_debug"):
self._debugmode(text[-1])
else:
PopUp(master=self.root
,texte=("In der momentanen Version dieses Programmes \n"+\
"existiert leider noch keine Hilfe...\n\n"+\
"Wenden Sie sich deshalb bitte bei Problemen \n"+\
"oder Fragen direkt an mich:\n\n\tTel:\t03643/204066\n\t\t"+\
"0179/9663560\n\tE-Mail:\tjohannesstoye@gmx.de\n\n"+\
"Ich danke Ihnen für ihr Verständnis!\n\nMfG\nJohannes Stoye",)
,title="Hilfe")
############def _j(zk):# wurde aufgrund der schlechten und entfernten console lahm gelegt
############ try:
############ exec zk
############ except SyntaxError:
############ return "Parsing...!, EOF..."
def _debugmode(self,za="3"):
"""aufruf des zusatzmenus mit za(von "zahl" abgeändert)="..."!"""
if type(za)==str:
if za.isdigit()==1:
za=int(za)
else:
if za in "ge":# für endung ~mode oder nur _debug... halt ohne zahl am ende
self.neu.delete(0.0,END)
self.neu.insert(END,"0=ende\n1=start menü\n2=codierungs-abfolge\n3=db-info\n4=verbesserungsvorschläge")
return
if za==0:#"debug" rückgängig machen
if self.dbm==1:
self.menu.delete(3)#das debugmenu wird gelöscht
self.root.update()
self.dbm=0
elif za==1:#"debug" einschalten, wenn nicht schon ist...
if self.dbm==0:
self.debug=Menu(self.menu,tearoff=0,relief="raised")
self.debug.add_command(label="ablauf (codierung)",command=lambda: self._debugmode(2))
self.debug.add_command(label="infos",command=self._debugmode)
self.debug.add_command(label="veränderungen",command=lambda: self._debugmode(4))
self.debug.add_separator()
self.debug.add_command(label="debugmode(0)",command=lambda: self._debugmode(0))
self.menu.add_cascade(menu=self.debug,label="debug")
self.root.update()
self.dbm=1
elif za==2:
self.neu.delete(0.0,END)
self.neu.insert(END,self.__ABLAUF__)
elif za==3:
self.neu.delete(0.0,END)
self.neu.insert(END,self.__INFO__)
elif za==4:
self.neu.delete(0.0,END)
self.neu.insert(END,self.__VERBESSERUNGEN__)
############ elif type(za[0])==str:
############ return _j(za[0])
def _console(self,e=None):
"""aufruf der klasse "console" (FF)->(de)"""
##Console(self.root,debugmode=self._debugmode)
###hier könnt IHR ja mal dran basteln ;)
pass
def _deaktivierung(self,e=None):
"""praktischer schönheitsfehler
genutzt um entries zu deaktivieren, wenn die einstellungen dafür herausgenommen wurden
testet doch einfach, wass passiert, wenn man hier für alles pass einsetzt
und auf die check/radiobuttons klickt!"""
if self.verschiebung.get()==True:
self.En_3["state"]="normal"
else: self.En_3["state"]="disabled"
if self.zweipw.get()==True:
self.En_2["state"]="normal"
else:self.En_2["state"]="disabled"
self.root.update()
g=_256bit(s_code=__SOURCECODE__,
info=__INFO__,
version=__VERSION__,
ablauf=__ABLAUF__,
verbesserungen=__VERBESSERUNGEN__,
entstehung=__ENTSTEHUNG__,
arg=arg)
#*************************************************************************************************************VERBESSERUNGEN
# wie oben beschrieben in der rechten seite "_debugmode"/"_debug" einfügen(kann auch groß geschrieben sein)
# , direkt daran die 1 setzen und dann im hilfe-menu auf hilfe klicken
# dann kann man auch "_debug" oder -"mode" auch ohne zahl eingeben für ein inhaltsverzeichnis, was an zahlen möglich ist..
#
# ach ja nochwas: dieses prog kann KEINE 256bit-Verschlüsselung, sondern nur um 256 zeichen quadratisch verschlüsseln
# vigenaire oder so...