我想知道是否有人知道如何将按钮点击保存到文本文件中。例如,如果一个按钮有文本"你好"在它上面,被按下;然后将其保存在文本文件中以显示"你好"按下了按钮
答案 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(...)