[Tkinter-discuss] Getting a canvas within an existing frame.

kimmyaf flahertyk1 at hotmail.com
Mon Apr 26 00:12:03 CEST 2010


Ok i got this figured out. It's important to  create the canvas in a class
that is subclassed from Frame.





kimmyaf wrote:
> 
> I cannot get my canvas to show within my existing frame.  I can only get
> it to build it's own frame. Can someone help? As you can see i've tried a
> number of different things so i have a lot of stuff commented out at the
> bottom. attached is a picture of what my GUI looks like. I want the canvas
> to show in the same frame as the address entries not seperately. Any help
> is appreciated. I see a lot of examples on the web but they are all
> building the canvas in their own frame. I need it in the other frame.
> 
> 
> class App:
>     def __init__(self, master):
>              
>         self.master = master # store link to master window (or:
> self.frame._root())        
>         self.frame = Frame(master)  # make a frame  with master as parent
>         self.frame.grid(row=0, column=0) # initiate drawing of frame in
> master window
>         
>         # make a label
>         self.label = Label(self.frame, text="Massachusetts Bay Transit
> Authority - Bus Locator", justify=LEFT, 
>                    font= ("Helvetica","16", "bold"))        
>         self.label.grid(row=0, column=0, columnspan=4)
>         print self.label.cget("font")  # what's my font?
>         
>         # make another label
>         self.label = Label(self.frame, text="Enter your current location",
> justify=LEFT, 
>                    font= ("Helvetica","12"))        
>         self.label.grid(row=1, column=0)
>         print self.label.cget("font")  # what's my font?
>         
>         
>         #######################################TEXT FIELDS##############
>         # make address text entry field
>         self.entry_addr = StringVar()
>         self.entry = Entry(self.frame, width=25,
> textvariable=self.entry_addr)
>         self.entry_addr.set("Address line 1")
> 
>         self.entry.grid(row=1, column=1)
>         
> 
>          # make City text entry field
>         self.entry_city = StringVar()
>         self.entry = Entry(self.frame, width=25,
> textvariable=self.entry_city)
>         self.entry_city.set("City")
> 
>         self.entry.grid(row=2, column=1)
> 
> 
>         
>         # make State text entry field
>         self.entry_state = StringVar()
>         self.entry = Entry(self.frame, width=11,
> textvariable=self.entry_state)
>         self.entry_state.set("State Abvtn")
> 
>         self.entry.grid(row=3, column=1)
> 
> 
>         
>         # make Zip text entry field
>         self.entry_zip = StringVar()
>         self.entry = Entry(self.frame, width=5,
> textvariable=self.entry_zip)
>         self.entry_zip.set("zip")
> 
>         self.entry.grid(row=4, column=1)
> 
> 
>         
>         ###################################CANVAS#######################
>         # Tkinter cannot use a PIL Image directly, but we can make a
> PhotoImage from it
>         #img = Image.open("Imgfolder\map.jpg")
>         
>         #define a new frame and put a text area in it
>         #self.imgframe=Frame(self.frame)
>         #self.text=Text(self.textframe,height=30, width=50,wrap=WORD)
>         #self.text.pack(side=LEFT, fill=BOTH)
>         
>         #tkinter_phimg = ImageTk.PhotoImage(i)  # can do only after Tk()!
>         self.imgframe = Tkinter.Tk()
>         self.canvas = Tkinter.Canvas(self.imgframe, width=50, height=50)
>         #canvas.pack()
> 
>  http://old.nabble.com/file/p28323328/frames.jpg 
> 

-- 
View this message in context: http://old.nabble.com/Getting-a-canvas-within-an-existing-frame.-tp28323328p28359260.html
Sent from the Python - tkinter-discuss mailing list archive at Nabble.com.



More information about the Tkinter-discuss mailing list