官术网_书友最值得收藏!

Ways to create widgets

There are two ways to create widgets in Tkinter.

The first way involves creating a widget in one line and then adding the pack() method (or other geometry managers) in the next line, as follows:

my_label = tk.Label(root, text="I am a label widget")
my_label.pack()

Alternatively, you can write both the lines together, as follows:

tk.Label(root, text="I am a label widget").pack()

You can either save a reference to the widget created ( my_label, as in the first example), or create a widget without keeping any reference to it (as demonstrated in the second example).

You should ideally keep a reference to the widget in case the widget has to be accessed later on in the program. For instance, this is useful in case you need to call one of its internal methods or for its content modification. If the widget state is supposed to remain static after its creation, you need not keep a reference to the widget.

Note that calls to pack() (or other geometry managers) always return None. So, consider a situation where you create a widget, and add a geometry manager (say, pack()) on the same line, as follows: my_label = tk.Label(...).pack(). In this case, you are not creating a reference to the widget. Instead, you are creating a None type object for the my_label variable. So, when you later try to modify the widget through the reference, you get an error because you are actually trying to work on a None type object. If you need a reference to a widget, you must create it on one line and then specify its geometry (like pack()) on the second line, as follows:
my_label = tk.Label(...)
my_label.pack()
This is one of the most common mistakes committed by beginners.
主站蜘蛛池模板: 临安市| 伊通| 永州市| 喜德县| 邵东县| 浮梁县| 科尔| 敦煌市| 罗山县| 亳州市| 白朗县| 舒兰市| 潼关县| 滁州市| 富宁县| 瑞安市| 利川市| 屏边| 定远县| 武隆县| 华池县| 景泰县| 深水埗区| 龙井市| 拜泉县| 玉树县| 乐陵市| 郴州市| 诸暨市| 宕昌县| 修水县| 崇礼县| 新宾| 威远县| 韩城市| 连城县| 鹤山市| 枣庄市| 准格尔旗| 柯坪县| 宿松县|