我現在用tkinter工作了一段時間。 有進行配置或在兩個方面至少我只知道二:配置tkinter小部件的「更好」方法是什麼?
1:frame.config(bg='#123456')
2:frame["bg"] = '#123456'
我用的是後者更頻繁。只有同時有更多事情要做,第二個對我來說纔有用。 最近我在想,如果他們中的一個比較快或者有其他優勢,那就更好了。
我不認爲這是一個非常重要的問題,但也許有人知道它。
我現在用tkinter工作了一段時間。 有進行配置或在兩個方面至少我只知道二:配置tkinter小部件的「更好」方法是什麼?
1:frame.config(bg='#123456')
2:frame["bg"] = '#123456'
我用的是後者更頻繁。只有同時有更多事情要做,第二個對我來說纔有用。 最近我在想,如果他們中的一個比較快或者有其他優勢,那就更好了。
我不認爲這是一個非常重要的問題,但也許有人知道它。
學習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
它簡單地把它傳遞給配置方法。就你關於效率的問題而言,第一種方法可能稍微快一些,因爲它不需要被解釋得太多,但速度差別太小而不能被過分關注。
並記住,與第二種方法不同,'.config()'方法可以一次更改多個參數。這將是一個很好的理由,說第一種方法更好一些,因爲第二種方法需要更少的代碼才能獲得相同的結果。 –
這是一個很好的觀點。是的,如果設置多個參數,那麼配置方法當然更可取。正如我在上面的評論中所說的,使用它,即使只有一個參數,也可以讓您在未來輕鬆添加更多參數。然而,這裏的要點是,當你追蹤執行時它們實際上是相同的,所以它是風格問題。 – Matthew
我不認爲這樣或那樣有任何優勢。我傾向於使用第一個,因爲如果將來需要配置更多屬性,它需要更少的代碼更改。我不認爲我甚至知道第二種方式可行。 – Matthew
你應該小心這樣的問題,因爲它不是特別客觀,而且會很有意見。如果你問一些更客觀的問題,這是一個更好的問題。例如,我懷疑第二種方式實際上是在幕後調用第一種方式。問他們在這方面是否相當,會更客觀。 – Matthew
謝謝,我將在未來記住這一點 –