2016-05-30 45 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()做到這一點,因爲它不不會返回一個入口對象,它只是打包這個小部件,您將無法訪問它以備後用。

相關問題