绑定或命令以获得返回和按钮工作

时间:2013-09-10 17:07:11

标签: python events button tkinter command

我对bind()方法和command参数有一个简单的问题。 通常,在程序中,您可以单击与执行某些操作相关的按钮,或者只需按返回键。 在下面的代码中,我尝试做同样的事情,它确实有效。 我只是问自己,行bttn.bind('<Button-1>', search)是否有点奇怪,因为它将按钮内的鼠标点击与功能相关联,而不是按下按钮本身。

一开始,我不想包括按返回键来执行条目,我写了bttn = Button(wd, text='Search', bg='Light Green', command=search),但此时search函数不是事件驱动的功能并且没有事件参数。

一旦我想要包含返回键以执行相同的工作,我(当然)用(event)编写函数,因此使用bind()方法进行鼠标操作按钮也是。

这是“最佳方式”吗?或者有更惯用的方式吗?

Python3 /视窗

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()

1 个答案:

答案 0 :(得分:1)

在按钮和绑定之间共享函数的常规方法是使事件参数可选,并且不依赖于它。你可以这样做:

def search(event=None):
    ...

bttn = Button(..., command=search)
...
entr.bind('<Return>', search)

如果省略command并依赖绑定事件,则会丢失Tkinter提供的内置键盘可访问性(您可以选择按钮并按空格键以单击它)。