4


簡単に言うと、Tkinter でウィジェットのマスター フレームの名前を取得する機能はありますか?

もう少し教えてください。
「BackButton」という名前のボタンがあります。

self.BackButton = Button(self.SCPIFrame, text = "Back", command = self.CloseFrame)
self.BackButton.place(x = 320, y = 320, anchor = CENTER)

このボタンをクリックすると、「CloseFrame」という名前の関数があり、現在のフレームを閉じます (および他の処理を行います)。この場合は「SCPIFrame」です。しかし、このためには、BackButton が存在するフレームの名前が必要です。何か案は?助けてくれてありがとう。

4

3 に答える 3

8

文字通りあなたの質問に答えるには:

Tkinterでウィジェットのマスターフレームの名前を取得する機能はありますか?

winfo_parentまさにあなたが必要なものです。_nametowidget便利なように、 (winfo_parent実際には親の名前を返すため)と組み合わせて使用​​できます。

parent_name = widget.winfo_parent()
parent = widget._nametowidget(parent_name)
于 2012-10-15T15:27:34.553 に答える
2

オブジェクト指向スタイルのプログラミングを使用する場合、マスター フレームはオブジェクト自体またはオブジェクトの属性のいずれかです。例えば:

class MyApplication(tk.Tk):
    ...
    def close_frame(self):
        # 'self' refers to the root window

この問題を OO 以外の方法で解決するもう 1 つの簡単な方法は、マスターをグローバル ウィンドウに保存することです (非常に小さなプログラムでは問題なく動作しますが、長期にわたって維持する必要があるものには推奨されません)。コールバックに。例えば:

self.BackButton = Button(..., command=lambda root=self.SCPIFrame: self.close_frame(root))
...
def CloseFrame(self, root):
    # 'root' refers to whatever window was passed in
于 2012-10-15T11:16:33.657 に答える