关于单击,双击事件的问题
你好,我用tkinter导入了一个表格数据至treeview中
我现在已经实现了
单击一行数据,可以进行删除操作。
但是
我还想双击一行数据
弹出一个新的窗口(外部函数)
这个窗口导入了双击的这行数据
在新的窗口中,查看这行具体的数据,并能够修改。
我现在碰到两个问题
1、双击事件,会连带单击事件发生,在不安装其它的模块下如何检测是双击事件,还是单击事件?
2、因为双击事件是原窗口下发生的,属于内部函数,如何调用执行外部函数(新窗口)?
万分感谢高手的回答!!!!! 你好!
针对你的问题,我提供如下解决方案:
一、如何检测双击事件:
在Tkinter中,可以使用<Double-Button-1>来绑定双击事件,而使用<Button-1>来绑定单击事件。
当点击鼠标左键时,先执行单击事件,如果在短时间内再次点击鼠标左键,则会触发双击事件。
因此,在<Button-1>事件的回调函数中,可以使用after方法设置一个定时器,在一定时间内没有再次点击鼠标左键,则认为是单击事件,否则认为是双击事件。
以下是示例代码:
def on_single_click(event):
# 设置一个500毫秒的定时器
root.after(500, lambda: handle_click(event))
def on_double_click(event):
# 取消之前设置的定时器
root.after_cancel(root.after_id)
handle_double_click(event)
def handle_click(event):
# 处理单击事件
pass
def handle_double_click(event):
# 处理双击事件
pass
root.bind('<Button-1>', on_single_click)
root.bind('<Double-Button-1>', on_double_click)
二、如何调用外部函数:
在内部函数中,可以使用global关键字来声明一个全局变量,在外部函数中定义这个变量并赋值,然后在内部函数中使用即可。
以下是示例代码:
def inner_func():
global data
# 使用全局变量data
pass
def outer_func():
# 定义并赋值全局变量data
global data
data = ...
# 调用内部函数
inner_func()
如果需要在内部函数中修改外部函数中的变量,可以使用nonlocal关键字来声明一个非局部变量。
以下是示例代码:
def outer_func():
data = ...
def inner_func():
nonlocal data
# 修改外部函数中的变量data
data = ...
inner_func() isdkz 发表于 2023-3-15 13:27
你好!
针对你的问题,我提供如下解决方案:
感谢,第二个问题,是因为我在双击事件的函数时选返回变量值,再执行函数,无法执行
我刚试了
先执行外部函数(父级同级函数)再执行返回值是可以的。
感谢啊
第一个问题,我下午试下。 isdkz 发表于 2023-3-15 13:27
你好!
针对你的问题,我提供如下解决方案:
你好,我试了下那个双击事件,
仍然会触发单击事件
我想着用if语句来处理
但也没有成功
不过还是感谢你的热心帮助,
谢谢!!!
页:
[1]