I am ne to python GUi, I have built a cust frame by inheriting the Frame , the code is as follows :
from Tkinter import * from logging import exception import tkFileDialog import pickle import os.path STATION_NAME, TARGET_NAME, HOST_NAME, TARGET_IP, HOST_IP, EXCEL_FILE = range(6) class NAddStation(Frame): def __init__(self, parent=None): Frame.__init__(self, parent) self.pack(side=TOP, expand=YES, fill=BOTH) self.tempVar = [] # Label Area self.labels = ["Station Name :", "Target Name :", "Host Name :", "Target's IP :", "Host's IP :", "Excel File :"] self.REMOVE =1 self.ADD = 2 self.UPDATE = 3 # Entry Area self.Entry_Target_Name = None self.Entry_Host_Name = None self.Entry_Target_IP = None self.Entry_Host_IP = None self.Entry_Station_Name = None self.Entry_File_Path = None #Misc self.File_Browse_Button = None self.Add_Button = None self.Cancel_Button = None self.createWindow() def openFileBrowser(self): filepath = tkFileDialog.askopenfilename() self.Entry_File_Path.insert(0, filepath) def validate(self): print("Adding Data....") self.Store_Station() def Remove_Station(self,key): if os.path.isfile('Station-pickle'): dbfile = open('Station-pickle', 'rb') db = pickle.load(dbfile) dbfile.close() db.__delitem__(key) dbfile = open('Station-pickle', 'wb') pickle.dump(db, dbfile) dbfile.close() def returnStationName(self): return self.tempVar[0].get() def Store_Station(self): fl={} rc={} fl['SN']= self.tempVar[0].get() fl['HN']= self.tempVar[1].get() fl['HP']= self.tempVar[2].get() fl['TN']= self.tempVar[3].get() fl['TP']= self.tempVar[4].get() fl['XL']= self.tempVar[5].get() station_name = self.tempVar[0].get() rc[station_name]= fl if not os.path.isfile('Station-pickle'): print ("Creating File") dbfile = open('Station-pickle', 'wb') # use binary mode files in 3.X pickle.dump(rc, dbfile) # data is bytes, not str else: print ("Appending File") # -------- dbfile = open('Station-pickle', 'rb') db = pickle.load(dbfile) dbfile.close() db[station_name] = fl dbfile = open('Station-pickle', 'wb') pickle.dump(db, dbfile) dbfile.close() dbfile.close() def Load_Station(self, key_value): dbfile = open('Station-pickle', 'rb') # use binary mode files in 3.X db = pickle.load(dbfile) for key in db: if key == key_value: print("STATION_NAME :" + db[key]['SN']) print("HOST_NAME :" + db[key]['HN']) print("HOST_IP :" + db[key]['HP']) print("TARGET_NAME :" + db[key]['TN']) print("TARGENT_IP :" + db[key]['TP']) print("FILE_NAME :" + db[key]['XL']) return ("STATION_NAME :" + db[key]['SN'] +"\n" + "HOST_NAME :" + db[key]['HN'] + "\n" + "HOST_IP :" + db[key]['HP'] + "\n" + "TARGET_NAME :" + db[key]['TN'] + "\n" + "TARGENT_IP :" + db[key]['TP'] + "\n" + "FILE_NAME :" + db[key]['XL']) print "No Station with Name " + key_value dbfile.close() def createWindow(self): # Station Entry Label(self, text=self.labels[STATION_NAME]).grid(row=0, column=0) self.Entry_Station_Name = Entry(self, width=20) self.tempVar.append(self.Entry_Station_Name) self.Entry_Station_Name.grid(row=0, column=1) # Host Entry Label(self, text=self.labels[HOST_NAME]).grid(row=1, column=0) self.Entry_Host_Name = Entry(self, width=20) self.tempVar.append(self.Entry_Host_Name) self.Entry_Host_Name.grid(row=1, column=1) Label(self, text=self.labels[HOST_IP]).grid(row=1, column=2) self.Entry_Host_IP = Entry(self, width=20) self.tempVar.append(self.Entry_Host_IP) self.Entry_Host_IP.grid(row=1, column=3) # Target Entry Label(self, text=self.labels[TARGET_NAME]).grid(row=2, column=0) self.Entry_Target_Name = Entry(self, width=20) self.tempVar.append(self.Entry_Target_Name) self.Entry_Target_Name.grid(row=2, column=1) Label(self, text=self.labels[TARGET_IP]).grid(row=2, column=2) self.Entry_Target_IP = Entry(self, width=20) self.tempVar.append(self.Entry_Target_IP) self.Entry_Target_IP.grid(row=2, column=3) #Browser Button Label(self, text=self.labels[EXCEL_FILE]).grid(row=3, column=0) self.Entry_File_Path = Entry(self, width=50) self.tempVar.append(self.Entry_File_Path) self.Entry_File_Path.grid(row=3, column=1) self.File_Browse_Button = Button(self, text="Browse", command=self.openFileBrowser, width=10,justify=CENTER).grid(row=3, column=3) Button(self, text="Add", command=(lambda : self.validate()), width=10,justify=CENTER).grid(row=4, column=1) Button(self, text="Cancel", command= self.winfo_toplevel().destroy, width=10,justify=CENTER).grid(row=4, column=2) self.Entry_Station_Name.focus() **Now I want to use the above mentioned Custom Frame in Main app , when i ckick on AddStation from menu file the custome Frame pops up , I can add the data but when i click on ok , i want the data to apear on the textArea , represented by Self.Entity2 in the following code:** from Tkconstants import LEFT, BOTTOM, X, TOP, RIGHT, ACTIVE, Y from Tkinter import Tk, Frame, Menu, END, Label, YES, BOTH, Entry, StringVar, Toplevel import Tkinter import sys from make_db_pickle import * class SimpleApp(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.pack(expand=YES, fill=BOTH) self.master.title('GUI') self.initialize(parent) self.TargetName = None self.HostName = None self.eHostNameEntry =None self.sbar = None self.AddWidget = None def CancelButtonPressed(self, widget): # print "Cancel Button Pressed" widget.destroy() def AddEntryToListBox(self,entry): self.entry1.insert(END, entry) def enter(event,entry,widget): event.OkButtonPressed(entry,widget) def OkButtonPressed(self,entry,widget): print "Ok bution pressed" self.AddEntryToListBox(str(entry.get()).upper()) widget.destroy() def runCommand(self, selection): # redefine me lower self.entry2.insert('1.0',"The following Station was selected " + selection) self.entry3.insert('1.0',"The following Station was selected " + selection) self.entry4.insert('1.0',"The following Station was selected " + selection) print('You selected:', selection) def handleList(self, event): index = self.entry1.curselection() # on list double-click label = self.entry1.get(index) # fetch selection text self.runCommand(label) # and call action here def initialize(self, parent): menubar = Menu(self.parent) self.parent.config(menu=menubar) self.sbar = Tkinter.Scrollbar(self) fileMenu = Menu(menubar, tearoff = False) fileMenu.add_command(label="Add Station", command=self.AddNewStation) fileMenu.add_command(label="Delete Station", command=self.onExit) fileMenu.add_separator() fileMenu.add_command(label="Exit", command=self.onExit) menubar.add_cascade(label="File", menu=fileMenu) self.grid() self.entry1 = Tkinter.Listbox(self, height=24, yscrollcommand=1, bg="white") # -------------------------- self.sbar = Tkinter.Scrollbar(self) self.sbar.config(command=self.entry1.yview) # xlink sbar and list self.entry1.config(yscrollcommand=self.sbar.set) # move one moves other self.entry1.pack(side=LEFT, expand=YES, fill=BOTH) # list clipped first # pos = 0 #list.config(selectmode=SINGLE, setgrid=1) # select,resize modes self.entry1.bind('<Double-1>', self.handleList) # set event handler # -------------------------- # for i in acts: # self.entry1.insert(END, i) # self.entry1 = Tkinter.Text(self) self.entry1.grid(column=0, row=0, sticky='EW') self.entry2 = Tkinter.Text(self) self.entry2.grid(column=1, row=0, sticky='EW', padx=1, pady=1) self.entry3 = Tkinter.Text(self) self.entry3.grid(column=0, row=1, sticky='EW', padx=1, pady=1) self.entry4 = Tkinter.Text(self) self.entry4.grid(column=1, row=1, sticky='EW', padx=1, pady=1) def onExit(self): sys.exit() def AddNewStation(self): n = Toplevel(root) n.title("Add Station") self.AddWidget = NAddStation(n) n.transient() def AddStation(self): AddStationDialogBox = Toplevel(root) #Tkinter.Tk() AddStationDialogBox.title('Add Station') frame = Frame(AddStationDialogBox) #frame for target entry frame.pack(padx=10, pady=10,side=TOP,fill=X) bottomframe = Frame(AddStationDialogBox) #froame for host entry bottomframe.pack(padx=10, pady=10,side=TOP,fill=X) bottomframe2 = Frame(AddStationDialogBox) #frame for button bottomframe2.pack(side=TOP) AddStationDialogBox.transient() lTargentName = Label(frame, text="Target Name :") lTargentName.pack(side=LEFT) TargetName = StringVar() eTargetEntryField = Entry(frame,width=20) eTargetEntryField.pack(side=RIGHT,fill=X) eTargetEntryField.focus() lHostName = Label(bottomframe, text="Host Name :") lHostName.pack(side=LEFT) HostName = StringVar() eHostNameEntry = Entry(bottomframe,width=20) eHostNameEntry.pack(side=RIGHT,fill=X) okbutton = Tkinter.Button(bottomframe2, text="OK",command=(lambda : self.OkButtonPressed(eTargetEntryField, AddStationDialogBox))) okbutton.pack(side=LEFT, padx=10, pady=15) cancelbutton = Tkinter.Button(bottomframe2, text="CANCEL", command=(lambda : self.CancelButtonPressed(AddStationDialogBox))) cancelbutton.pack(side=LEFT, padx=10, pady=15) AddStationDialogBox.focus() AddStationDialogBox.bind('<Return>',(lambda event : self.enter(eTargetEntryField,AddStationDialogBox))) AddStationDialogBox.mainloop() if __name__ == "__main__": root = Tk() app = SimpleApp(root) app.mainloop() -- View this message in context: http://python.6.x6.nabble.com/how-to-get-values-form-the-custom-widget-module-to-the-parent-frame-widget-in-Tkinter-tp5050211.html Sent from the Python - tkinter-discuss mailing list archive at Nabble.com. _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org https://mail.python.org/mailman/listinfo/tkinter-discuss