【问题标题】:How can I identify when a Button is released in Tkinter?如何识别按钮何时在 Tkinter 中释放?
【发布时间】:2013-05-09 01:31:09
【问题描述】:

我正在使用 Tkinter 制作 GUI 并驱动机器人。

我有 4 个按钮:FORWARDRIGHTBACKWARDLEFT。我想让机器人在按钮被按下时移动,在按钮被释放时停止。

如何识别按钮何时在 Tkinter 中释放?

【问题讨论】:

  • 我知道您正处于开发阶段,但是您有任何可以粘贴的代码以便我们帮助调试吗?如果你需要 Tkinter 的教程,谷歌是你最好的选择。
  • 对不起,我忘记发布我的代码了。刚刚贴在上面。谢谢!
  • 尽管有特定的解决方案,但您是否将stackoverflow.com/questions/15268882/… 视为可能的解决方案?
  • 这里是一些关于按钮事件的 Tkinter 源材料(用于“按下”和“释放”)。如果您卡在那里,请告诉我。
  • Nascent_Notes,谢谢!可惜找不到那个链接,哈哈。它就像一个魅力!再次感谢:)

标签: python events button binding tkinter


【解决方案1】:

您可以分别为<ButtonPress><ButtonRelease> 事件创建绑定。

了解事件和绑定的良好起点是:http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

这是一个工作示例:

import Tkinter as tk
import time

class Example(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.button = tk.Button(self, text="Press me!")
        self.text = tk.Text(self, width=40, height=6)
        self.vsb = tk.Scrollbar(self, command=self.text.yview)
        self.text.configure(yscrollcommand=self.vsb.set)

        self.button.pack(side="top")
        self.vsb.pack(side="right", fill="y")
        self.text.pack(side="bottom", fill="x")

        self.button.bind("<ButtonPress>", self.on_press)
        self.button.bind("<ButtonRelease>", self.on_release)

    def on_press(self, event):
        self.log("button was pressed")

    def on_release(self, event):
        self.log("button was released")

    def log(self, message):
        now = time.strftime("%I:%M:%S", time.localtime())
        self.text.insert("end", now + " " + message.strip() + "\n")
        self.text.see("end")

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(side="top", fill="both", expand=True)
    root.mainloop()

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多