Tkinter: Why aren't my widgets expanding when I resize the window?
Rick Johnson
rantingrickjohnson at gmail.com
Mon Mar 5 14:03:23 EST 2012
On Mar 5, 11:31 am, John Salerno <johnj... at gmail.com> wrote:
> Ok, so use pack when putting the frame into the root, since that's
> all that goes into the root directly. But just out of curiosity,
> what did I do wrong with using grid? How would it work with grid?
If you read my post carefully, i said: "You need to use
columnconfigure and rowconfigure on ROOT!". Here is the solution;
although, not the correct code you should use because pack is perfect
for this:
## START CODE ##
import tkinter as tk
import tkinter.ttk as ttk
class AppFrame(ttk.Frame):
def __init__(self, parent, **kwargs):
super().__init__(parent, **kwargs)
self.create_widgets()
def create_widgets(self):
entry = ttk.Entry(self)
entry.grid(row=0, column=1, sticky='nsew')
label = ttk.Label(self, text='Name:')
label.grid(row=0, column=0, sticky='nsew')
root = tk.Tk()
root.title('Test Application')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
frame = AppFrame(root, borderwidth=15, relief='sunken')
frame.grid(row=0, column=0, sticky='nsew')
root.mainloop()
## END CODE ##
> I don't like importing things piecemeal. I suppose I could do:
So you prefer to pollute? How bout we just auto import the whole
Python stdlib so you can save a few keystrokes?
> import tkinter.constants as tkc (or something like that)
>
> and qualify each constant. Seems like more work, but it just seems
> better than having to manage each constant that I need in the import
> list.
Then do "from tkinter.constants import *". I have no complaints
against import all the constants during testing/building, however, you
should be a professional and import only the constants you are going
to use.
> Also, N+S+E+W and (N, S, E, W) don't seem to work unless qualified,
Of course not, you never imported them! How could that code possibly
work?
> so that's four more constants I'd have to explicitly import. And
> (tk.N, tk.S, tk.E, tk.W) is just horrible to look at.
Wah!
Stop whining and act like a professional! You complain about
qualifying constants but you happily type "self" until your fingers
bleed without even a whimper???
Look, either import ONLY the constants you need, or qualify each
constant with a module name/variable; that is the choices available to
a professional. Or, just be lazy and pollute your namespace.
FYI: Lazy coders get what they deserve in the end.
More information about the Python-list
mailing list