How can I identify when a Button is released in Tkinter?

后端 未结 1 734
猫巷女王i
猫巷女王i 2020-12-21 01:42

I\'m using Tkinter to make a GUI and drive a robot.

I have 4 Buttons: FORWARD, RIGHT, BACKWARD and LEFT. I want

相关标签:
1条回答
  • 2020-12-21 02:04

    You can create bindings for the <ButtonPress> and <ButtonRelease> events independently.

    A good starting point for learning about events and bindings is here: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

    Here's a working example:

    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()
    
    0 讨论(0)
提交回复
热议问题