<< Chapter < Page Chapter >> Page >

A sticky demonstration

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.

Demonstrates effect of change in column width with sticky W, E

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.

A Label and a Button

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:

  • References to the widgets are not saved in ordinary Python variables because there will be no need to refer to them later in program code.
  • The dot operator is used to call grid immediately upon the creation of each widget as opposed to calling grid in a separate statement as was done in Listing 4 .
  • The Button widget uses a text argument to place the string "Calculate" on the face of the button.
  • No text is placed in the Label . The empty Label will be used to display the results of converting feet to meters.
  • The left end of the Button widget is stuck to the west side of the cell in which it resides. It is not stretched to the width ofthe cell as is the case with the Entry and Label widgets
  • Last and perhaps most important, the Button widget uses the command argument to specify that the function named calculate will be executed whenever the user presses the button.

Three more Label widgets

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.

Finishing touches

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)

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Itse 1359 introduction to scripting languages: python. OpenStax CNX. Jan 22, 2016 Download for free at https://legacy.cnx.org/content/col11713/1.32
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Itse 1359 introduction to scripting languages: python' conversation and receive update notifications?

Ask