1 つのトップレベル ウィンドウまたはルートに関連してハンドラーを実行するボタンがある場合、別のトップレベルのウィジェットを変更できますか? これを行う標準的な方法は何ですか?
2 に答える
1
私は Tkinter の経験はありませんが、PyQt4 と変わらないと確信しています。通常、親子関係が必要です。親ウィジェットには子ウィジェットが含まれており、それらを変更できます。子供たちは通常、両親についてあまり知らないはずであり、信号やイベントを介して通信します.
ハンドラーが起動すると、ハンドラーが認識しているウィジェットを自由に変更できる必要があります。つまり、最上位ウィンドウに 10 個のウィジェットがあり、ハンドラーがメソッドとして含まれている場合、そのメソッドはself
属性を介して 10 個のウィジェットを変更できる必要があります。
何かのようなもの:
class MyTopWindow:
def __init__(self):
self.widget1 = Widget
self.widget2 = Widget
self.button = Button
#self.button.clicked -> self.handler
def handler(self):
self.widget1.someAttribute = 1
button.click() # -> handler()
コンポジションを利用して、ウィジェット内にウィジェットを構築します。避けるべきことは、ハンドラーが実際には所有していないグローバル ウィジェットを参照することです。
于 2012-07-15T00:41:43.917 に答える
0
はい、ボタン (または任意のイベント) のハンドラーは、他のトップレベルの任意のウィジェットを変更できます。そのハンドラーがウィジェットへの参照を持っている限り、ハンドラーはそれを変更できます。その点で制限はありません。
于 2012-07-15T12:10:34.747 に答える