<< Chapter < Page | Chapter >> Page > |
As an aside, I am going to demonstrate what happens with the sticky parameters in Listing 4 when the column width changes. Compare Figure 4 with Figure 2
Figure 4 . A sticky demonstration.
As you will see shortly, the numerical result of calculating the conversion from feet to meters is displayed in column 2 in the row immediately below the Entry widget. When that result requires more width than is available in the column by default, the width of the column is automatically increased.Because the right and left ends of the Entry widget stick to the sides of its cell in that column, the width of the Entry widget increases accordingly.
By now you should be catching on to the general scheme of things and less detailed instructions should be needed.
Listing 5 creates a Label widget and a Button widget and places them in the rows and columns indicated by the sticky parameters.
Listing 5 . A Label and a Button. |
---|
ttk.Label(mainframe, textvariable=meters).grid(column=2, row=2, sticky=(W, E))
ttk.Button(mainframe,text="Calculate", command=calculate).grid(column=3, row=3, sticky=W) |
A few things are different here:
Listing 6 creates three more Label widgets and places them in the rows and columns shown.
Listing 6 . Three more Label widgets. |
---|
ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=W)
ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W) |
There is nothing new in Listing 6 so no explanation of that code should be required.
The author of the program describes the first line of code in Listing 7 as follows:
"The first line walks through all of the widgets that are children of our content frame, and adds a little bit of padding around each, so they aren't so scrunched together. We could have added these options to each "grid" call when we first put the widgets onscreen, but this is a nice shortcut."
Listing 7 . Finishing touches. |
---|
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
feet_entry.focus()root.bind('<Return>', calculate) |
Notification Switch
Would you like to follow the 'Itse 1359 introduction to scripting languages: python' conversation and receive update notifications?