如何停止tab在Tkinter EntryBox上选择文本

2024-06-25 22:56:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用AutocompleteEntry上可用的代码,为Tkinter附带的Entry小部件创建一个子类。在

在第57行,handle_keyrelease()函数似乎处理te AutocompleteEntry对某些按键的反应:

def handle_keyrelease(self, event):
    """event handler for the keyrelease event on this widget"""
    if event.keysym == "BackSpace":
        self.delete(self.index(Tkinter.INSERT), Tkinter.END) 
        self.position = self.index(Tkinter.END)
    if event.keysym == "Left":
        if self.position < self.index(Tkinter.END): # delete the selection
            self.delete(self.position, Tkinter.END)
        else:
            self.position = self.position-1 # delete one character
            self.delete(self.position, Tkinter.END)
    if event.keysym == "Right":
        self.position = self.index(Tkinter.END) # go to end (no selection)
    if event.keysym == "Down":
        self.autocomplete(1) # cycle to next hit
    if event.keysym == "Up":
        self.autocomplete(-1) # cycle to previous hit
    # perform normal autocomplete if event is a single key or an umlaut
    if len(event.keysym) == 1 or event.keysym in tkinter_umlauts:
        self.autocomplete()

正确的键被设置为我想做的,完成我输入的第一个单词并跳到它的末尾,我的问题是,我想为Tab键更改正确的键,但是我的输入框上的Tab键选择了所有的文本,我找不到方法来改变这种行为,有没有办法?在

下面是我创建输入框以供参考的代码部分,抱歉:

^{pr2}$

Tags: to代码selfeventindexiftkinterposition
1条回答
网友
1楼 · 发布于 2024-06-25 22:56:29

为了进一步参考,基于this question,我只需在tab中添加一个bind,调用一个returnsbreak的函数,就可以让它正常工作了,如下所示:

def tab_handler(event):
    return 'break'

entry.bind('<Tab>', tab_handler)

只需将EntryAutoComplete文件中的if event.keysym == "Right":更改为if event.keysym == "Tab":

干得很好。在

相关问题 更多 >