tkinter: making widgets instance or not?

John McMonagle jmcmonagle at velseis.com.au
Tue Jun 6 19:27:37 EDT 2006


On Tue, 2006-06-06 at 19:42 +0000, John Salerno wrote:
> Fredrik Lundh wrote:
> 
> > however, if you need to access a widget later on, it might be a good 
> > idea to save a reference to it somewhere...
> 
> To follow up on that point, I have the following code now. I have two 
> questions about it:
> 
> 1. Can I somehow make the passing of 'master' to the draw_entry method 
> automatic, so I don't have to type it each time I call the function?
> 
> 2. Related to your comment, the obvious problem here is that it doesn't 
> save references to the text box names, so I can't access them later. Is 
> there still a way to automate the process like I've done, but have each 
> entry field have a separate name?
> 
> Thanks.
> 
> ---------------
> 
> import Tkinter as tk
> 
> 
> class App:
> 
>      def __init__(self, master):
>          self.draw_entry(master, 'First Name:')
>          self.draw_entry(master, 'Last Name:')
> 
>      def draw_entry(self, master, label_text):
>          frame = tk.Frame(master, bd=4)
>          frame.pack()
>          self.label = tk.Label(frame, text=label_text, width=10)
>          self.label.pack(side=tk.LEFT)
>          self.entry = tk.Entry(frame)
>          self.entry.pack(side=tk.LEFT)
> 
> 
> root = tk.Tk()
> app = App(root)
> root.resizable(width=False, height=False)
> root.mainloop()
> -- 


Try this:

import Tkinter as tk

class App:

    def __init__(self, master):
        self.parent = master
        self.entry1 = self.draw_entry('First Name:')
        self.entry2 = self.draw_entry('Last Name:')
        
    def draw_entry(self, label_text):
        frame = tk.Frame(self,parent, bd=4)
        frame.pack()
        label = tk.Label(frame, text=label_text, width=10)
        label.pack(side=tk.LEFT)
        entry = tk.Entry(frame)
        entry.pack(side=tk.LEFT)
        return entry

root = tk.Tk()
app = App(root)
root.resizable(width=False, height=False)
root.mainloop()



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the Python-list mailing list