Hier der Code, den Button den ich mit "OK/weiter" bezeichnet hatte heißt ihier "senden":
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import dircache
import os
import subprocess
import sys
import Tkinter as tk
import re
meine_Kng=sys.argv[1]
std_Empfaenger_Kng=sys.argv[2]
def lies_Personendaten (Dateiname):
pat={}
datei=open(Dateiname)
pat["nummer"] = datei.readline().strip()
pat["nachname"] = datei.readline().strip()
pat["vorname"] = datei.readline().strip()
datei.readline().strip()
datei.readline().strip()
pat["gebdat"] = datei.readline().strip()
datei.close()
return pat
# Fenster:
root=tk.Tk()
nachrFensterBreite=500
nachrFensterHoehe=410
screenBreite=root.winfo_screenwidth()
screenHoehe=root.winfo_screenheight()
xFenster=screenBreite/2 - nachrFensterBreite/2
#xFenster=0
yFenster=screenHoehe/2 - nachrFensterHoehe/2
root.geometry("%dx%d+%d+%d" % (nachrFensterBreite, nachrFensterHoehe, xFenster, yFenster))
root.title('Nachricht erstellen')
=============================================================================
# Nachrichteninhalte aus Datei config auslesen
============================================================================
wMsgFrame = tk.Frame(root, relief=tk.SUNKEN, bd=1)
wMsgFrame.grid(row=0, column=0, ipadx=10, ipady=10, sticky=tk.W)
cmd = "grep 'Nachricht ' config| grep -v '^#' | sed 's/Nachricht //'"
p = subprocess.Popen(cmd, shell=True, #bufsize=1,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.stdin.close()
Nachrichten=p.stdout.read()
nachrWahl=[]
# nachrWahl.append(tk.StringVar()) so gehts nicht! Schade
nachrWahl=[tk.StringVar() for i in xrange(30)] # maximal 30 versch. Nachr. sollten reichen
nr=0
for i in Nachrichten.split("\n"):
if i !="":
#print i
msg=re.findall(r""(.*)"", i)
shortcut=re.findall(r"(>.<)", msg[0])
if shortcut and shortcut[0] != "":
pos=msg[0].find(">")
shortcut_char=shortcut[0][1:2].lower()
msg[0]=msg[0].replace("<","").replace(">","")
else:
pos=100 # dummy-Stelle die nie erreicht wird
cb=tk.Checkbutton(wMsgFrame,text=msg[0], underline=pos, onvalue=msg[0], offvalue="0", variable=nachrWahl[nr])
cb.grid(row=nr, sticky=tk.W )
if i.find("*VORAUSWAHL:") != -1 and i.find("ENDE*") != -1:
arbeitspl=re.findall(r"\*VORAUSWAHL:(.*)ENDE\*", i)
if arbeitspl[0].find(meine_Kng) != -1:
cb.select()
if shortcut and shortcut[0] != "":
root.bind('<Alt-%c>' % shortcut_char, lambda dummy, c=cb: c.toggle())
#print "bind ", shortcut_char
# nachrWahl.append(tk.StringVar()) so gehts nicht , schade
nr+=1
anzahlNachrichten=nr
=============================================================================
# Adressaten auslesen
=============================================================================
wParentFrame = tk.Frame(root, relief=tk.SUNKEN, bd=1 )
wParentFrame.grid(row=0,column=1, sticky=tk.N)
wAddressFrame = tk.Frame(wParentFrame, relief=tk.SUNKEN, bd=1)
wAddressFrame.grid(row=0, column=0, ipadx=10, ipady=10, pady=0, sticky=tk.W)
cmd = "grep 'Empfaenger' config| grep -v '^#' | sed 's/Empfaenger //'"
p = subprocess.Popen(cmd, shell=True, #bufsize=1,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.stdin.close()
Adressaten=p.stdout.read()
adressWahl=[tk.StringVar() for i in xrange(50)] # maximal 50 Empfaenger sollten reichen
nr=0
for i in Adressaten.split("\n"):
if i !="":
Liste! Daran "schuld" ist re
kng=re.findall(r""(.*)"", i)
nam=re.findall(r"'(.*)'", i)
shortcut=re.findall(r"(>.<)", nam[0])
if shortcut and shortcut[0] != "":
pos=nam[0].find(">")
shortcut_char=shortcut[0][1:2].lower()
nam[0]=nam[0].replace("<","").replace(">","")
else:
pos=100 # dummy-Wert, hohe Zahl, die nie erreicht wird
kng_nam=kng[0]+","+nam[0]
if kng[0] != meine_Kng:
cb=tk.Checkbutton(wAddressFrame,text=nam[0], underline=pos, onvalue=kng_nam, offvalue="", variable=adressWahl[nr])
cb.grid(row=nr, sticky=tk.W)
if i.find("*VORAUSWAHL:") != -1 and i.find("ENDE*") != -1:
arbeitspl=re.findall(r"\*VORAUSWAHL:(.*)ENDE\*", i)
#print arbeitspl[0] # z.B. arbeitspl[0]=" ab ac "
if arbeitspl[0].find(meine_Kng) != -1:
cb.select()
if shortcut and shortcut[0] != "":
root.bind('<Alt-%c>' % shortcut_char, lambda dummy, c=cb: c.toggle())
nr+=1
else:
print nam[0] # mein Name wird nach std out geschrieben! KEIN DEBUG!!!
anzahlAdressaten=nr
=============================================================================
# zuletzt bearbeitete Personen auslesen
=============================================================================
cmd = "ls /home/personen/export."+meine_Kng+"* -t"
p = subprocess.Popen(cmd, shell=True, #bufsize=1,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.stdin.close()
dateiListe=p.stdout.read()
#print dateiListe
ppWahl=tk.IntVar()
wPPFrame = tk.Frame(wParentFrame, relief=tk.SUNKEN, bd=1)
wPPFrame.grid(row=1, column=0, ipadx=10, ipady=10, pady=20, sticky=tk.NSEW)
nr=0
personen=[]
for i in dateiListe.split("\n"):
if i != "":
#print i
ppDaten=lies_Personendaten(i)
PPRadioText=ppDaten["nachname"]+", "+ppDaten["vorname"]+", "+ppDaten["nummer"]+", "+ppDaten["gebdat"]
personen.append({'nachname':ppDaten["nachname"], 'vorname':ppDaten["vorname"], \
'nummer':ppDaten["nummer"], 'gebdat':ppDaten["gebdat"]})
if nr <= 1:
R=tk.Radiobutton(wPPFrame,text=PPRadioText, anchor=tk.NW, indicatoron='1',variable=patWahl,value=nr)
R.grid(row=nr, sticky=tk.W)
if nr == 0: R.select() # wird evtl. wieder durch "keine Person" ueberschrieben
nr+=1
nr=3 # muss immer = 3 (vierter Eintrag) sein, sonst klappt das mit dem Auslesen unten nicht
cmd = "grep 'Person' config| grep -v '^#' | sed 's/Person //'"
p = subprocess.Popen(cmd, shell=True, #bufsize=1,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.stdin.close()
kPerson=p.stdout.read()
j=0
for i in kPerson.split("\n"): # es gibt nur einen Eintrag , Stand 05.2009
if i !="" and j<1:
j+=1
#print "i: "+i
txt=re.findall(r""(.*)"", i)
shortcut=re.findall(r"(>.<)", txt[0])
if shortcut and shortcut[0] != "":
pos=txt[0].find(">")
shortcut_char=shortcut[0][1:2].lower()
txt[0]=txt[0].replace("<","").replace(">","")
else:
pos=100 # dummy-Stelle die nie erreicht wird
cb=tk.Radiobutton(wPPFrame, underline=pos,text=txt[0],variable=patWahl,value=nr)
cb.grid(row=nr, sticky=tk.W)
if i.find("*VORAUSWAHL:") != -1 and i.find("ENDE*") != -1:
arbeitspl=re.findall(r"\*VORAUSWAHL:(.*)ENDE\*", i)
if arbeitspl[0].find(meine_Kng) != -1:
cb.select()
if shortcut and shortcut[0] != "":
root.bind('<Alt-%c>' % shortcut_char, lambda dummy, c=cb: c.select())
#print "bind ", shortcut_char
personen.append({'nachname':"kein Person", 'vorname':"",'nummer':"", 'gebdat':""})
=============================================================================
# Eingabefeld, unten
=============================================================================
freierText=tk.Entry(width=70)
freierText.grid(row=1, columnspan=2)
freierText.focus()
####################################################################################
def werte_auslesen():
print "nachr"
listeNachr=""
for i in xrange(anzahlNachrichten):
if nachrWahl[i].get() != "":
listeNachr=str(listeNachr)+nachrWahl[i].get()+" "
print str(listeNachr) + freierText.get()
#print personen
gewaehlterPP=ppWahl.get()
print personen[gewaehlterPP]['nummer']
print personen[gewaehlterPP]['nachname']
print personen[gewaehlterPP]['vorname']
print personen[gewaehlterPP]['gebdat']
for i in xrange(anzahlAdressaten):
if adressWahl[i].get() != "":
# z.B. aa,Empfang
print adressWahl[i].get()
root.quit()
def print_abbrn():
print "abbrn"
root.quit()
def print_empfn():
print "empfn"
root.quit()
def print_gsndt():
print "gsndt"
root.quit()
tk.Button(root, text="empfangen", command=print_empfn).grid(row=3,column=0,padx=1,sticky=tk.W)
tk.Button(root, text="gesendet", command=print_gsndt).grid(row=3,column=0,padx=1)
tk.Button(root, text="abbrechen", command=print_abbrn).grid(row=3,column=1,padx=1,sticky=tk.W)
tk.Button(root, text="Senden", command=werte_auslesen).grid(row=3,column=1,padx=1,sticky=tk.E)
#tk.Button(root, text="Senden", width=30, command=werte_auslesen).grid(row=3,column=1,padx=1)
root.bind('<Escape>',lambda dummy: quit())
root.bind('<Return>',lambda dummy: werte_auslesen())
root.mainloop()