2016-05-30 44 views
1

我是新的Python和tkinter所以这个问题可能看起来很天真:如果我不需要更改它们,可以同时创建和放置小部件吗? 它的作品,但它是一个很好的做法?如果不是为什么?可以同时创建和放置tkinter小部件吗?

我的意思的例子:

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

当你说“如果我不需要改变它们”时,你(大部分)回答了你自己的问题...... – gboffi

回答

2

要在@天网answer ....扩大

每当你做Widget(*args, **kwargs).pack()pack()方法返回None正如其他几何形状的经理,所以如果你想这个分配给一个变量的变量将是None

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

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

+1

哪个“上一个”答案?答案可以在不同的时间以不同的顺序出现。你可以说得更详细点吗? –

+0

公平点,编辑。但我认为单独的时间戳就说得很清楚。 – Pythonista

1

没有什么不妥的做法,我已经看到了好几次。您不必在GUI中保留对每个小部件的引用。

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()做到这一点,因为它不不会返回一个入口对象,它只是打包这个小部件,您将无法访问它以备后用。

相关问题