2

我不确切知道我的问题出在哪里,它要么在绑定中,要么在它自己被调用的函数中。

我的按钮都出现在 labelFrame 下,每个按钮都带有一个输入框,因此用户可以加载许多 csv 文件进行分析,并且文件路径是可见的。它必须由用户搜索,因为这些文件可以存在于我不同且未连接的项目文件夹中。

这是一个示例按钮。

csv_type21 = Button(csvfiles, text = "Browse ...")
csv_type21.bind("<Button-1>", lambda event, obj = var21, tid = 21: find_cvsfile(event, obj, tid))

如果用户取消查找文件,它们仍然处于下沉状态,即使他们选择了一个文件,它也会保持下沉状态。(但输入框确实会使用文件路径进行更新)。

这是他们调用的函数,它要求一个 csv 文件并将其保存为一个元组,以便我可以跟踪哪个 csv 是哪个。之后,我为按钮所在的条目框设置了 StringVar 以说明文件路径。

def find_csvfile(event, obj, tid):
input_csvfile = askopenfile(initialdir = 'C:/',
                            filetypes = [("CSV File", "*.csv")],
                            title = 'Open CSV File for id ' + str(tid) + '...',
                            mode = 'r')
csv_data = tid, input_csvfile
filepath = input_csvfile.name
obj.set(filepath)

我试过摆弄大量不同的变量和参数,但没有任何效果。我认为它必须是调用相同命令的多个按钮,但我不能确定。

任何帮助表示赞赏。

谢谢。

4

3 回答 3

8

return "break"在末尾添加def find_csvfile(event, obj, tid):

于 2017-07-18T23:19:39.977 回答
2

通过删除绑定解决了问题。lambda 命令被移到 Button 声明中,并且从 find_csvfile 函数中删除了“event”参数。此解决方案可阻止按钮在按下时凹陷。

csv_type21 = Button(csvfiles, text = "Browse ...", command = lambda obj = var21, tid = 21: find_csvfile(obj, tid))
于 2013-01-10T09:26:21.197 回答
-3

使用 button.bind("",funcion) 进行探测

def funcion()
   print

在 funcion() 执行期间,当鼠标按下并释放时使用“”调用开始。

当返回状态被按下

于 2015-01-06T17:34:33.840 回答