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

问题描述:

我正在编写一个测试程序,使用Python 2检测Tkinter窗口内的鼠标移动。*。我可以创建所需的部件,并根据需要适当的事件处理函数绑定到根小部件: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'键移动鼠标时,我希望能够激活事件处理程序。我需要什么事件字符串?我在哪里可以找到绑定事件处理程序的事件字符串格式的完整概要?

的合并事件处理,你可以这样做:

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") 

这将“可能”的工作。

+0

这很好。然而,出于好奇,你碰巧知道我在哪里可以找到绑定字符串?我搜索了,我找到了提供常用网站的网站,但我想知道我在哪里可以找到所有这些网站(供将来参考...) –

+0

请关注此链接http://tkinter.unpythonic.net/ wiki/Events –

+0

我想我真正想知道的是如果支持组合事件绑定字符串。因为听起来好像执行嵌套绑定语句会在一段时间后变得相当复杂(特别是如果我们根据从''处理程序中按下的键,我们有不同的''事件处理)。我知道TK支持用户定义的名为“虚拟事件”。 Tkinter是否以任何方式支持? –