Python(2. *)Tkinter - 高级事件处理格式

时间:2016-10-04 15:53:54

标签: python tkinter event-handling

我正在编写一个测试程序,用Python 2检测Tkinter窗口中的鼠标移动。我可以根据需要创建必要的小部件并将相应的事件处理函数绑定到根小部件:

import Tkinter as tk

class App:

   def __init__(self, master=None):
      self.root = master
      self.frame = tk.Frame(master)
      self.frame.pack()
      self.create_widgets()
      self.setup_handlers()

   def create_widgets(self):
      ...

   def setup_handlers(self):
      self.root.bind('<Motion>', self.update)   # This is the line I wish to look at

   def update(self, event):
      ...

root = tk.Tk()
app = App(master=root)
root.mainloop()

我现在要做的是能够使用组合输入激活事件处理程序。例如,我希望能够在按住'r'键移动鼠标时激活事件处理程序。我需要什么事件字符串?在哪里可以找到绑定事件处理程序的事件字符串格式的完整纲要?

1 个答案:

答案 0 :(得分:1)

对于组合事件处理,您可以执行以下操作:

class App:
  holding = False
  def __init__(self, master):
    self.root = master
    self.root.bind("<KeyPress>", self.holdkey)
    self.root.bind("<KeyRelease>", self.releasekey)

  def holdkey(self, e):
    if e.char == "r" and not self.holding:
      self.root.bind("<Motion>", self.combined_update)
      self.holding = True

  def releasekey(self, e):
    if e.char == "r" and self.holding:
      self.root.unbind("<Motion>")
      self.holding = False

  def combined_update(self, e):
    # Event handling for the combined event.
    print ("yo")

这将&#34;可能&#34;工作