python - Tkinter 按钮调用对象上的方法

标签 python class oop button tkinter

我有一些对象,它们都是同一类的实例;每个对象都有(作为其属性之一)一个 tkinter 按钮,我希望每个 tkinter 按钮对其所属的对象执行一个方法。我不太确定如何去做这件事。我尝试过修改 lambda 函数,并用“self_”替换“self”,以防 tkinter 已经将“self”传递给按钮的命令,但这些都不起作用;我是类(class)新手,在今天之前没有遇到过 lambda 函数,所以这并不令我感到惊讶。示例代码如下 - 请有人解释如何使其以简单、简洁和Pythonic的方式工作,或者如果这样的解决方案不存在,那么提供解决方法?提前致谢

import tkinter as tk
from tkinter import ttk

class SpecialButton():

    def __init__(self, row):

        self.button = ttk.Button(root, text="button", command=self.delete)
        self.button.grid(row=row, column=1)

        self.label = ttk.Label(root, text="label")
        self.label.grid(row=row, column=2)

    def delete(self):

        self.button.forget()
        self.label.forget()
        #some other stuff

root = tk.Tk()

for row in range(3):
    SpecialButton(row)

root.mainloop()

最佳答案

代码的唯一问题是您需要调用 grid_forget 而不是 forget

此外,该代码有点误导 - delete 方法实际上并没有删除任何内容,它只是将其从 View 中删除。小部件仍然存在并占用内存。你知道吗?如果您确实想要删除小部件,请调用 destroy 方法。

关于python - Tkinter 按钮调用对象上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619173/

相关文章:

c++ - 前向声明与包含

python - 如何在 Python 中处理 JSON 和 Windows 路径?

python - 如何在完成后重新启动 python 脚本

class - 在 TypeScript 中,如何防止在派生类上调用方法?

language-agnostic - 对象关系

Java - 验证 arrayList 中是否已存在行号,

php - 对 PHP OOP 作用域感到困惑

Python strptime 芬兰语

python - 从 python 创建 pdf

C# - 创建未知大小的字节数组?