我有一个关于bind()
方法和command
论点的简单问题。通常,在程序中,您可以单击与您正在执行的操作相关的按钮来执行某些操作,或者只需按返回键。在下面的代码中,我尝试做同样的事情并且它确实有效。我只是问自己这条线bttn.bind('<Button-1>', search)
是否有点奇怪,因为它将按钮内的鼠标单击与功能相关联,而不是按下按钮本身。
一开始,我不想包括按回车键来执行条目,并且我已经编写了bttn = Button(wd, text='Search', bg='Light Green', command=search)
,但那时该search
函数不是事件驱动函数并且没有事件参数。
一旦我想包括按返回键来完成相同的工作,我(当然)必须用 编写函数(event)
,因此也使用bind()
鼠标按钮的方法。
这是做到这一点的“最佳方式”吗?还是有更惯用的方法?
Python3/Windows
from tkinter import *
def search(event):
try:
txtFile = open(str(entr.get()), 'r')
except:
entr.delete(0, END)
entr.insert(0, "File can't be found")
else:
x = 0
while 1:
rd = txtFile.readline()
if len(rd)> x:
longest = rd
x = len(rd)
elif rd == '':
break
txtFile.close()
entr.delete(0, END)
entr.insert(0, longest)
#####MAIN#####
wd = Tk()
wd.title('Longest sentence searcher')
entr = Entry(wd, bg='White')
entr.grid(row=0, column=0)
entr.bind('<Return>', search)
bttn = Button(wd, text='Search', bg='Light Green')
bttn.grid(row=1, column =0)
bttn.bind('<Button-1>', search)
wd.mainloop()