ich habe mir etwas zusammengebastelt, das 4 verschiedene Auswahlmenüs anbietet. Dabei werden die Inhalte aus den Auswahlmenüs aus 4 verschiedenen Textdateien eingelesen. Falls, der gewünschte Inhalt nicht drin ist, kann man für jedes Menü noch separat Text eingeben und das mit einem Button bestätigen, so dass es auch aufgenommen werden soll. Es klappt aber nicht:-( Bei jedem Start wird die Vorbelegung der Eingabefelder in die Datei neu eingeschrieben, obwohl nicht mit "Add" bestätigt wurde. Und wenn ich etwas in die Eingabefelder schreibe und dies mit "Add" in die Auswahlmenüs aufnehmen will, passiert nichts

Besten Dank schonmal!
Code: Alles auswählen
from __future__ import with_statement
from Tkinter import *
from Tkinter import _setit
from pylab import grid, title
import tkMessageBox
ProgramLabel = " 123"
class App (Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.StartFrame()
self.List =["A", "B", "C", "D"]
self.s = 0
self.i = 0
#for "\n".join(List)
for self.i in range(4):
#~ for self.s in self.List:
#~ print self.s,
self.setupMenue(self.i)
self.Quit = Button(self.FirstFrame, text="QUIT", bg="red", command=self.FirstFrame.quit)
self.Quit.grid(row=5, column=6)
def StartFrame (self):
# First frame for buttons
self.FirstFrame = Frame(root)
self.FirstFrame.grid()
def setupMenue(self,Li):
self.var=StringVar()
self.var = self.readFile(Li)
self.label_add = Label(self.FirstFrame, text="new %s"%self.List[Li])
self.label_add.grid(row=Li, column=3)
self.entryString = StringVar()
self.entry_add = Entry(self.FirstFrame,textvariable=self.entryString)
self.entry_add.grid(row=Li, column=4)
self.entryString.set(self.List[Li])
self.fetchEntry = self.entryString.get()
self.entry_add.focus_set()
self.value = self.entry_add.get()
print self.value
self.button_add = Button(self.FirstFrame, text="Add", command=self.writeFile(Li))
self.button_add.grid(row=Li, column=5)
self.pn= Menubutton (self.FirstFrame, width=40, text=self.List[Li], relief=RAISED)
self.pn.menu = Menu ( self.pn, tearoff = 0 )
self.pn["menu"] = self.pn.menu
self.pn.grid(row=Li, column=0)
self.fin = open("Test%s.txt"%(Li+1),"r")
self.iVar = IntVar()
self.lineList = self.fin.readlines()
for self.line in self.lineList:
print self.line,
self.pn.menu.add_checkbutton (label=self.line, variable=self.iVar)
def writeFile (self,Li):
self.input = self.entry_add.get()
print self.input
self.pn= Menubutton (self.FirstFrame, width=40, text=self.List[Li], relief=RAISED)
self.pn.menu = Menu ( self.pn, tearoff = 0 )
self.pn["menu"] = self.pn.menu
self.pn.grid(row=Li, column=0)
self.menu = self.pn["menu"]
self.variable = self.var
self.command = self.entry_add.get() # what you passed as command argument to optionmenu
#self.menu.add_command(label=self.value, command=_setit(self.variable, self.value, self.command))
self.pn.menu.add_checkbutton(label=self.value, command=_setit(self.input, self.variable, self.command))
file1 = open("Test%d.txt"%(Li+1),"a")
print (self.input) # prints out details about the file
file1.write(self.input)
file1.write("\n")
file1.close()
def readFile (self,Li):
with open("Test%s.txt"%(Li+1)) as self.f:
#for line in f.readlines().split('\n'):
for self.line in self.f.read().split("\n"):
print self.line
if __name__ == '__main__':
# TK requires this for widgets:
root = Tk()
# Calls parent widget
app = App()
root.title(ProgramLabel)
root.maxsize(width=2500, height=2500)
app.mainloop()