当前位置: 首页 > 知识库问答 >
问题:

如何在tkinter python中冻结键选项卡的使用

乔凯康
2023-03-14

我正在尝试制作一个简单的应用程序,在打字时对键盘上的字母进行置乱。我正在使用python和tkinter。我有一个文本小部件,我需要禁用我的应用程序中的键选项卡。我用下面的代码试过了。

text.bind("<Tab>", no_op)

此处不使用以下函数:

def no_op(self):
    return "break"        

但是我没有得到预期的结果。我在下面发布了整个代码。

import Tkinter as tk

def onKeyPress(event):
    first=event.char
    second=ord(first)
    if second==32:
        second=chr(second)
        text.insert('end', '%s' % (second ))
    elif second==8:
        length = len(text.get(1.0, 'end'))
        contents = text.get(1.0, 'end')
        newcon = contents[:-2]
        #text.insert('end', '%s' % (length ))
        text.delete(1.0,'end')
        text.insert('end', '%s' % (newcon ))
    elif(second>=65 and second<=90 or second>=97 and second<=122):
        second=chr(second+3)
        text.insert('end', '%s' % (second ))


def no_op(self):
    return "break"


root = tk.Tk()
root.config(cursor='none')
#root.attributes('-zoomed',True)
text = tk.Text(root, background='white', foreground='black', font=('Comic Sans MS', 12))
text.pack(expand=True,)

text.bind("<Tab>", no_op)
text.bind("<Button-1>", no_op)
text.config(cursor="none")
root.bind('<KeyPress>', onKeyPress)
root.mainloop()

(注意:问题是当其他小部件有焦点时,按下选项卡时,文本光标会出现在文本区域。然后,如果我按下任何字母说,'a'既'a'和'd'被插入到文本字段。我想解决这个问题。)

共有1个答案

苍元章
2023-03-14

你的问题不在于tab键,而在于焦点管理。只有当文本小部件从未获得键盘焦点时,您才能使代码正常工作。至少有两种解决方案:

  • 继续沿着防止用户关注文本小部件的路径前进

首先,您不需要尝试更改选项卡(以及shift选项卡)的行为,只需在文本小部件获得焦点时移动焦点即可。例如:

text.bind("<FocusIn>", lambda event: root.focus_set())

这将阻止文本小部件获得焦点,您的代码应该可以工作。

另一个解决方案是修改你的

 类似资料:
  • Resharper在一个类中有这个新的选项卡键规则,当选项卡时,它会将选项卡转换为导航到代码的下一部分,但不会在它们之间添加选项卡行间距。有人知道如何禁用这个吗?

  • 我一直试图通过Selenium打开浏览器中的选项卡,似乎除了Safari之外,所有选项卡都可以使用。 我正在尝试以下操作: 有什么提示吗? 更新 一些相关的回答包括: null 原因:org.openqa.selenium.InvalidArgumentException:请求正文不包含必需的参数“handle”。构建信息:版本:“3.14.0”,修订版:“AACCCCE0”,时间:“2018-0

  • 问题内容: 我正在逐行打印数据,并希望像表一样组织数据。 我最初用过。 但是对于某些较大的名称,电话号码会被推离对齐状态 我正在尝试使用String.format()实现此效果。谁能告诉我使用的格式语法? 我尝试过,但这不是我想要的。我希望它看起来像这样: 约翰·史密斯123456789 鲍勃·麦迪逊123456789 查尔斯·理查兹123456789 编辑:这些答案似乎适用于System.out

  • 当我像下面的例子一样点击选项卡2时,我如何将选项卡1 Neumorphic css翻译成选项卡2呢,就像从选项卡1滑到选项卡2一样? https://dribble.com/shots/10805627-neumorphic-tab

  • 有没有一种方法可以通过adaptive payments API打开“用信用卡或借记卡付款”选项卡来打开PayPal结账? 什么决定将在签出页面中打开的选项卡?