是否可以同时创建和放置tkinter小部件?

时间:2016-05-30 19:23:10

标签: python tkinter

我是Python和tkinter的新手,所以这个问题可能看起来很幼稚:如果我不需要更改它们,是否可以同时创建和放置小部件? 它有效,但这是一个好习惯吗?如果不是为什么?

我的意思的一个例子:

import tkinter as tk
window=tk.Tk()
tk.Label(window,text='Lost Label').pack()
window.mainloop()

3 个答案:

答案 0 :(得分:2)

扩展@ Skynet的answer ....

每当Widget(*args, **kwargs).pack() pack()方法返回None时,其他几何管理器都会返回None,因此如果您尝试将此值分配给变量,则变量将为<carousel3d-slide ng-repeat="slide in app.slides2 track by $index" ng-style="{'background': slide.bg}"> <div style="padding: 20px; color: #fff"> <md-card md-theme="{{ showDarkTheme ? 'dark-grey' : 'default' }}" md-theme-watch> <md-card-title> <md-card-title-text> <span class="md-headline">Card with image</span> <span class="md-subhead">Large</span> </md-card-title-text> <md-card-title-media> <div class="md-media-lg card-media"></div> </md-card-title-media> </md-card-title> <md-card-actions layout="row" layout-align="end center"> <md-button>Action 1</md-button> <md-button>Action 2</md-button> </md-card-actions> </md-card> </div> </carousel3d-slide>

在这种情况下可能不会,因为您可能实际上想要存储对小部件的引用。

如果您不需要参考,那么它就没有问题。正如另一个答案所指出的那样,除非您打算以某种方式使用此引用,否则不需要对GUI中的每个小部件进行明确的引用。除非我打算更改标签文本/修改它,否则我通常会使用您的方法来节省一些空间。无需编写比您更多的代码!

答案 1 :(得分:2)

例如,您正在创建Button小部件。

btn = Button(blabla, text="Button1")

这将返回一个按钮对象,如果您稍后需要配置它或获取有关它的信息,您可以通过btn变量来完成。 但是,如果您使用类似btn = Button(blabla, text="Button1").pack()的内容,则会返回None而不是按钮对象,因此您将无法更改有关按钮的任何内容或稍后获取有关该按钮的信息。

另一个例子是Entry小部件

entry = Entry(blabla)

稍后使用它可以entry.get()来获取条目中的文本 但是如果你使用entry = Entry(blabla).pack()就不能这样做,因为它不会返回一个条目对象,它只是打包小部件,你将无法访问它以供以后使用。

答案 2 :(得分:1)

这种方法没有任何问题,我已经看过很多次了。您不必保留对GUI中每个小部件的引用。