1

これは1週間以上私を困惑させました。タイトルが尋ねるように、変数を使用してパラメーターを取得する TK ボタン コマンドを取得するにはどうすればよいですか?

これが私が使用している正確なコードです:

i=0

# Make a Staff list button
staffButton = Button(masterFrame,
                        text='Staff List',
                        width=20,
                        justify=LEFT,
                        #command=lambda:self.openTabHere(isLeft,STAFF_LIST_TAB))
                        command=lambda:self.openTabHere(isLeft,i))
staffButton.grid(column=0, row=1)

# Make a course list button
courseButton = Button(masterFrame,
                        text='Course List',
                        width=20,
                        justify=LEFT,
                        #command=lambda:self.openTabHere(isLeft,COURSE_LIST_TAB))
                        command=lambda:self.openTabHere(isLeft,i))
courseButton.grid(column=0, row=0)

i=1

コメント化された (ハードコードされた) コマンドを使用すると、意図したとおりに機能することに注意してください。ただし、変数 i を使用してコメントなしのコードを使用すると、両方のボタンが i=1 のコマンドで終了します。

コマンドが実行時に変数 i を取得するということですか? もしそうなら、または他の理由で、私がやろうとしていることを達成するために何ができますか?

これは、すべてのスタッフに対して同様のことを行っているためです。ハードコーディングできない変数としてパラメーターに含まれるスタッフ ID を持つタブを開くボタンを持つことを意図した for ループ。

ありがとうございます。

4

1 に答える 1

1

ウィジェットの作成時に i の値をバインドする必要があります。

staffButton = Button(..., command=lambda btn=i:self.openTabHere(isLeft,btn))

isLeft静的な値でない限り、おそらく に対して同じことを行う必要があります。

于 2012-10-29T02:30:55.400 に答える