gpt4 book ai didi

python - 如何在不编写类的情况下访问 Tkinter 中按钮的父级?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:16 28 4
gpt4 key购买 nike

有没有办法在不将父级保存在对象属性中的情况下找到小部件的父级(特别是按钮)?

but = Button(main_window, text = "close window!")
but.bind("<Button-1>", btn_handler)

def btn_handler(e):
e.parent().destroy() # I need something like this!
# e.parent() ==>> main_window
# without writing class and defining self.parent ...

我在互联网上搜索了几个小时,但没有找到合适的答案。

最佳答案

您可以使用 but.master 访问 but 对象的父对象。

要获取处理回调的小部件的容器小部件,您可以执行以下操作:

def callback(evt):
handling_widget = evt.widget
parent_of_handling_widget = handling_widget.master
# or evt.widget.master
parent_of_handling_widget.destroy()

也就是说,我不太确定您为什么要避免使用自定义类。这是您问题的自然解决方案。

import tkinter
from tkinter import ttk

class MyButton(ttk.Button):

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.configure(command=self.callback)

def callback(self):
self.master.destroy()

tk = tkinter.Tk()
b = MyButton(tk, text="close window!")
b.pack() # or whatever geometry manager you're using

# we're done!

关于python - 如何在不编写类的情况下访问 Tkinter 中按钮的父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955735/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com