Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter绑定鼠标双击_Python_Tkinter_Key Bindings - Fatal编程技术网

Python Tkinter绑定鼠标双击

Python Tkinter绑定鼠标双击,python,tkinter,key-bindings,Python,Tkinter,Key Bindings,我正在尝试将鼠标双击绑定到一个函数,该函数目前只在Tkinter列表框中打印当前选择。为了清楚起见,仅当用户双击Tkinter列表框中的一个项目时,该函数才应打印。我应该使用什么事件绑定?您可以绑定到: widget.bind(“”,处理程序) 还有用于普通鼠标单击的,以及用于三次鼠标单击的 有关Tkinter中绑定的更多信息,请参阅。您必须认识到,所有小部件都有一个层次结构,这意味着对于您单击的每个小部件,可以进行多个绑定。如果不重写默认操作,则会调用每个层次结构的默认处理程序,从最低级别(

我正在尝试将鼠标双击绑定到一个函数,该函数目前只在Tkinter列表框中打印当前选择。为了清楚起见,仅当用户双击Tkinter列表框中的一个项目时,该函数才应打印。我应该使用什么事件绑定?

您可以绑定到

widget.bind(“”,处理程序)
还有用于普通鼠标单击的
,以及用于三次鼠标单击的


有关Tkinter中绑定的更多信息,请参阅。

您必须认识到,所有小部件都有一个层次结构,这意味着对于您单击的每个小部件,可以进行多个绑定。如果不重写默认操作,则会调用每个层次结构的默认处理程序,从最低级别(例如
Listbox
)开始,一直到
Tk()
Toplevel()
小部件。对于您来说,由于您只希望在单击listbox项目时打印,因此可以绑定到listbox小部件,如下所示:

listboxWidget.bind('<Double-Button-1>', listboxWidget_leftclick_handler)

其中,
passworder
是您的自定义处理程序,它会抓取包含输入字符的事件,然后将星号输出到
条目中。但是,如果在处理程序末尾不使用
返回“break”
,则
条目
小部件仍然会看到您不希望显示的字符,因为一旦处理程序插入星号,默认处理程序将只插入键入的字符(与正常情况一样)。但是,如果执行
返回'break'
,则不会调用默认处理程序,并且键入的字符不会作为附加项出现在
条目中。为了区分单击和双击操作,请将鼠标调用操作延迟一段时间,以便设置双击标志。请参见以下示例:

from tkinter import *

def mouse_click(event):
    '''  delay mouse action to allow for double click to occur
    '''
    aw.after(300, mouse_action, event)

def double_click(event):
    '''  set the double click status flag
    '''
    global double_click_flag
    double_click_flag = True

def mouse_action(event):
    global double_click_flag
    if double_click_flag:
        print('double mouse click event')
        double_click_flag = False
    else:
        print('single mouse click event')

root = Tk()
aw = Canvas(root, width=200, height=100, bg='grey')
aw.place(x=0, y=0)

double_click_flag = False
aw.bind('<Button-1>', mouse_click) # bind left mouse click
aw.bind('<Double-1>', double_click) # bind double left clicks
aw.mainloop()
从tkinter导入*
def鼠标单击(事件):
''延迟鼠标操作以允许双击发生
'''
aw.after(300,鼠标动作,事件)
def双击(事件):
''设置双击状态标志
'''
全局双击标志
双击标志=真
def鼠标动作(事件):
全局双击标志
如果双击标志:
打印('鼠标双击事件')
双击标志=错误
其他:
打印('单次鼠标单击事件')
root=Tk()
aw=画布(根,宽度=200,高度=100,背景为灰色)
aw位置(x=0,y=0)
双击标志=错误
绑定(“”,鼠标点击)#绑定鼠标左键点击
绑定(“”,双击)#绑定左键双击
aw.mainloop()

请注意,如果您有一个用于单击和双击的绑定,那么这两个绑定都将被调用。
myEntry.bind('<KeyPress>', passworder)
from tkinter import *

def mouse_click(event):
    '''  delay mouse action to allow for double click to occur
    '''
    aw.after(300, mouse_action, event)

def double_click(event):
    '''  set the double click status flag
    '''
    global double_click_flag
    double_click_flag = True

def mouse_action(event):
    global double_click_flag
    if double_click_flag:
        print('double mouse click event')
        double_click_flag = False
    else:
        print('single mouse click event')

root = Tk()
aw = Canvas(root, width=200, height=100, bg='grey')
aw.place(x=0, y=0)

double_click_flag = False
aw.bind('<Button-1>', mouse_click) # bind left mouse click
aw.bind('<Double-1>', double_click) # bind double left clicks
aw.mainloop()