2017-08-26 69 views
2

我現在用tkinter工作了一段時間。 有進行配置或在兩個方面至少我只知道二:配置tkinter小部件的「更好」方法是什麼?

1:frame.config(bg='#123456')

2:frame["bg"] = '#123456'

我用的是後者更頻繁。只有同時有更多事情要做,第二個對我來說纔有用。 最近我在想,如果他們中的一個比較快或者有其他優勢,那就更好了。

我不認爲這是一個非常重要的問題,但也許有人知道它。

+1

我不認爲這樣或那樣有任何優勢。我傾向於使用第一個,因爲如果將來需要配置更多屬性,它需要更少的代碼更改。我不認爲我甚至知道第二種方式可行。 – Matthew

+1

你應該小心這樣的問題,因爲它不是特別客觀,而且會很有意見。如果你問一些更客觀的問題,這是一個更好的問題。例如,我懷疑第二種方式實際上是在幕後調用第一種方式。問他們在這方面是否相當,會更客觀。 – Matthew

+0

謝謝,我將在未來記住這一點 –

回答

5

學習Tkinter的代碼庫,我們發現如下:

class Frame(Widget): 
    # Other code here 

class Widget(BaseWidget, Pack, Place, Grid): 
    pass 

class BaseWidget(Misc): 
    # other code here 

class Misc: 
    # various code 
    def __setitem__(self, key, value): 
     self.configure({key: value}) 

因此,這兩種方法實際上相當於。行

frame['bg'] = '#123456' 

被解釋爲frame.__setitem__('bg','#123456'),其通過繼承鏈後發現自己在內部類Misc它簡單地把它傳遞給配置方法。就你關於效率的問題而言,第一種方法可能稍微快一些,因爲它不需要被解釋得太多,但速度差別太小而不能被過分關注。

+0

並記住,與第二種方法不同,'.config()'方法可以一次更改多個參數。這將是一個很好的理由,說第一種方法更好一些,因爲第二種方法需要更少的代碼才能獲得相同的結果。 –

+0

這是一個很好的觀點。是的,如果設置多個參數,那麼配置方法當然更可取。正如我在上面的評論中所說的,使用它,即使只有一個參數,也可以讓您在未來輕鬆添加更多參數。然而,這裏的要點是,當你追蹤執行時它們實際上是相同的,所以它是風格問題。 – Matthew

相關問題