首页 > 解决方案 > 选择文件时使用文件对话框额外(错误)单击鼠标

问题描述

我的应用程序包含很多 Checkbuttons 和 filedialog 用于加载各种类型的文件。我发现使用 filedialog.askopenfilename() 选择文件后,在当前鼠标光标正下方的位置有一个额外的鼠标单击事件。这个鼠标点击事件是我认为选择文件的点击。问题是,如果选择文件后的当前鼠标光标位置正好在 Checkbutton 的顶部,则 Checkbutton 将被错误地切换。有没有办法消除这种额外的鼠标点击?

import tkinter as tk
from tkinter import filedialog

def callback(event):
    print("clicked at", event.x, event.y)

def open_file():
    fname=tk.filedialog.askopenfilename()

root = tk.Tk()
root.minsize(1024,600)

root.bind("<Button-1>", callback)

tk.Button(root,text='File action',command=open_file).grid(row=0,column=0)


root.mainloop()

以上代码在python 3.5.3下验证。每次鼠标点击都会显示在终端上。单击标记为“文件操作”的按钮会触发文件对话框。可以看出,如果选择了文件,终端会显示额外的鼠标单击(据说与鼠标单击以选择文件相关联)。如果通过单击“X”或“取消”取消文件对话框,则没有额外的鼠标单击。

标签: tkinter

解决方案


推荐阅读