有没有办法将按下的按钮保存到文本文件中

时间:2016-11-09 17:00:05

标签: tkinter

我想知道是否有人知道如何将按钮点击保存到文本文件中。例如,如果一个按钮有文本"你好"在它上面,被按下;然后将其保存在文本文件中以显示"你好"按下了按钮

1 个答案:

答案 0 :(得分:0)

不,内置任何东西。你必须添加自定义绑定。

例如,您可以在Button类上添加类绑定。例如:

root.bind_class("Button", "<ButtonPress-1>", log_buttonpress, add="+")

然后,您可以定义一个名为log_buttonpress的方法,如下所示:

def log_buttonpress(self, event):
    with open("/tmp/log.txt", "a+") as f:
        f.write("=> " + event.widget.cget("text") + "\n")

当然,这只会用鼠标捕获点击次数。它不会捕获使用键盘点击的按钮。此外,在释放按钮之前不会调用该按钮的命令,因此这可能会记录单击但未实际激活的按钮。这些问题是可以解决的,但需要更多代码。这只是一般概念,而不是剪切和粘贴解决方案。

另一种创建自己的Button子类的方法,并将此特殊绑定添加到每个实例。通过使用绑定标记,您可以为每个实例添加一个特殊标记,然后您只需要为该标记添加一个绑定。

例如:

class MyButton(tk.Button):
    def __init__(self, *args, **kwargs):
        tk.Button.__init__(self, *args, **kwargs)
        bindtags = list(self.bindtags())
        bindtags.insert(1, "MyButton")
        self.bindtags(tuple(bindtags))

    @classmethod
    def log_button(cls, event):
        with open("/tmp/junk.txt", "a+") as f:
            f.write("?> " + event.widget.cget("text") + "\n")

...
root = tk.Tk()
root.bind_class("MyButton", "<ButtonRelease-1>", MyButton.log_button)

b1 = MyButton(...)
b2 = MyButton(...)