And this, right here, is why I like the grid method. ; )
I can easily place everything into a grid that I lay out before hand. I'm
used to coordinate systems.
I just don't have a firm grasp on the way pack works.

Jacob Schmidt


> First, thanks for the responses on my questions on using Tkinter for data
> entry from last week. Alan's and Harm's responses were very helpful.
>
> I'm now playing with a tiny application that does nothing except allow the
> user to enter a variable for processing.  It provides a default value, and
> three buttons: if the user hits CANCEL, the app terminates; if he hits OK,
> it prints out the entered variable; if he hts RESET, the data entered is
> reset to the default it had to start.
>
> The program logic works, but I'm totally lost on the pakcer layout
> manager.  What I want to see is a window with something like this (bear
> with my ascii art):
>
>   URL: [ http://www.somewhere.com/default ]
>
>   +--------+   +-------+  +----+
>   | Cancel |   | Reset |  | OK |
>   +--------+   +-------+  +----+
>
> What I'm getting is:
>
>        URL:
>     +--------+
>     | Cancel |
>     +--------+   [ http://www.somewhere.co ]
>   +-------++----+
>   | Reset || OK +
>   +-------++----+
>
>
> I'm sure my error lies in the packing, but I don't get it.
>
> I'm probably thinking abou it wrong, but my logic is this:
>
> I create a master frame, with two sub-frames, fBaseURL for the URL label
> and entry, and fButtons for the three buttons.
>
> In the fBaseURL frame, I pack the label widget to the top, and then the
> entry widget right (i.e., the entry widget to the right of the label
> widget).  Then I pack in the fBaseURL frame.
>
> In the fButtons frame, I pack in the "Cancel" button as the top of
> fButtons; then "Reset" to its right, and "OK" to its right.  Then I pack
> in the fButtons frame.
>
> Finally, I pack the parent frame.
>
> Well, I'm lost.  I'm trying dozens of variations, but just don't get it.
> Can someone explain to me how to pack in more simple terms?
>
> Here's my code:
>
> import Tkinter as tk
>
> class DEApp:
>     def __init__(self):
>
>         top=tk.Tk()
>
>         self.DefaultBaseURL = "http://www.somewhere.com/default/";
>         self.tvDefaultBaseURL=tk.StringVar()
>         self.tvDefaultBaseURL.set(self.DefaultBaseURL)
>
>         self.F=tk.Frame(top)
>
>         fBaseURL=tk.Frame(self.F)
>         lBaseURL=tk.Label(self.F, text="URL:")
>         eBaseURL=tk.Entry(textvariable=self.tvDefaultBaseURL)
>         lBaseURL.pack(side="top")
>         eBaseURL.pack(side="right")
>         fBaseURL.pack(side="top")
>
>         fButtons=tk.Frame(self.F)
>         bCancel=tk.Button(fButtons, text="Cancel", command=self.evCancel)
>         bReset=tk.Button(fButtons, text="Reset", command=self.evReset)
>         bOK=tk.Button(fButtons, text="OK", command=self.evOK)
>         bCancel.pack(side="top")
>         bReset.pack(side="right")
>         bOK.pack(side="right")
>         fButtons.pack(side="left")
>
>         self.F.pack(side="top")
>
>     def evCancel(self):
>         print "Cancel hit"
>         self.F.quit()
>         return
>
>     def evReset(self):
>         print "Reset hit"
>         self.tvDefaultBaseURL.set(self.DefaultBaseURL)
>         return
>
>     def evOK(self):
>         print "OK hit"
>         print "BaseURL is now", self.tvDefaultBaseURL.get()
>         self.F.quit()
>         return
>
> app = DEApp()
> app.F.mainloop()
>
>
>
>
>
>
> _______________________________________________
> Tutor maillist  -  [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
>

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to