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

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.
主站蜘蛛池模板: 唐河县| 仪征市| 淮阳县| 彰武县| 眉山市| 张北县| 五河县| 兰州市| 绥化市| 南康市| 花垣县| 保山市| 襄城县| 芒康县| 互助| 阜宁县| 安阳市| 黄平县| 尼玛县| 吐鲁番市| 辽阳市| 嘉峪关市| 舞钢市| 崇左市| 威远县| 巍山| 金华市| 石楼县| 绥德县| 桐柏县| 梨树县| 台湾省| 同心县| 封丘县| 桃园市| 宾川县| 靖边县| 丰城市| 日土县| 东乌珠穆沁旗| 敖汉旗|