2017-08-26 4 views
2

私はtkinterで少し時間を使っています。tkinterウィジェットを設定するための「より良い」アプローチとは何ですか?

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

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

私はより頻繁に後者を使用 設定のためか、少なくとも私はちょうど2つを知っている2つの方法があります。同時に行うべきことがもっとある場合にのみ、2番目のものは私の役に立つと思われます。 最近、私はそれらのうちの1つがより速いのと同じように「より良い」か、他の利点があるかどうか疑問に思っていました。

私はそれが決定的に重要な質問だとは思わないが、誰かがそれを知っているかもしれない。 Tkinterのコードベースを勉強

+1

一方的にも他にも利点はないとは思いません。私は、最初に多くの属性を設定する必要がある場合は、コードの変更を少なくする必要があるため、最初に使用する傾向があります。私は第二の道が働くことさえ知っていたとは思わない。 – Matthew

+1

これは特に客観的ではなく、非常に意見に基づいているため、このような質問には注意する必要があります。もっと客観的なものを尋ねるなら、それは良い質問です。たとえば、私は第2の方法が実際には裏側の最初の方法を呼び出すと考えています。その点で同等かどうかを尋ねることは、より客観的なものになります。 – Matthew

+0

ありがとうございます、私は将来このことを念頭に置いておきます –

答えて

5

、我々は次を見つける:

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}) 

はしたがって、2つの方法が実際に等価です。ライン

frame['bg'] = '#123456' 

は、継承チェーンを通過した後、単にconfigureメソッドに渡し内部クラスMiscに自分自身を発見frame.__setitem__('bg','#123456')、と解釈されます。効率についての質問に関しては、最初の方法はおそらく少しだけ速いです。なぜなら、それほど解釈する必要はないからですが、速度の差はあまりにも懸念されるほどです。

+0

であり、 '.config()'メソッドは2番目のメソッドとは異なり、一度にいくつかのパラメータを変更できることに注意してください。これは、第2の方法よりも同じ結果を得るためにコードの行が少なくて済むので、第1の方法が少し優れていると言う良い理由になります。 –

+0

それは良い点です。複数のパラメータを設定する場合、確かにconfigメソッドが適しています。上記の私のコメントで述べたように、1つのパラメータであってもそれを使用すると、将来的にパラメータを簡単に追加できるようになります。ただし、ここでのポイントは、実行をトレースするときに実際に同じであるため、スタイルの問題になります。 – Matthew

関連する問題