python - 检查哪个条目被聚焦(Python)

标签 python python-3.x if-statement tkinter

我正在使用 Python v3.4 并使用 Tkinter 库来锻炼我的 GUI。

我在我的 python 应用程序中包含了一个屏幕键盘。问题如下:

它们是三个条目:

username = Entry(root,font="Verdana 22")

password = Entry(root, font="Verdana 22")

courrierEntry = Entry(root, font="Verdana 22")

下面是键盘

 def select(value):
        if value == "BACK":
            entry2 = len(username.get()[:-1])

        username.delete(entry2, END)

    elif value == " Space ":
            username.insert(END, ' ')

    elif value == " Tab ":
            username.insert(END, '    ')

    else:
            username.insert(END, value)

buttons = [
    'q','w','e','r','t','y','u','l','o','p','BACK','7','8','9','-',
    'a','s','d','f','g','h','j','k','l','[',']','4','5','6','+',
    'z', 'x','c','v','b','n','m',',','.','?','1','2','3','/','HELP',
    ]

varRow = 2
varColumn = 0

for button in buttons:

    command = lambda x = button: select(x)
    keyboardButton = Button(keyboardFrame, text = button, width = 8,  bg="#795548", fg="#ffffff",
            activebackground="#D7CCC8",activeforeground="#000000",relief = "raised", padx=0,font="Verdana 11 bold",
            pady=8, bd=8, command = command)
    keyboardButton.grid(row = varRow, column = varColumn)
    varColumn += 1
    if varColumn > 14 and varRow == 2:
        varColumn = 0
        varRow += 1
    if varColumn > 14 and varRow == 3:
        varColumn = 0
        varRow +=1

正如您在键盘上注意到的那样,它仅指 username entry,因此即使不关注 username entry,只要按下按钮username entry react 。

我希望建立某种 if 语句,问题是我不熟悉验证条目是否被聚焦/选择。它应该按照当前选择的条目而不是名称。所以基本上只要我选择我就可以打字。

更新:

------键盘------------

#checking to see whcih input entry is currently focused
inputFocus = None

def currentEntry(userEntry):
    global inputFocus
    inputFocus = userEntry

username.bind("<FocusIn>", lambda: currentEntry(username))
password.bind("<FocusIn>", lambda: currentEntry(password))
courrierEntry.bind("<FocusIn>", lambda: currentEntry(courrierEntry))


def select(value):
    if value == "BACK":
        entry2 = len(inputFocus.get()[:-1])

        inputFocus.delete(entry2, END)

    elif value == " Space ":
            inputFocus.insert(END, ' ')

    elif value == " Tab ":
            inputFocus.insert(END, '    ')

    else:
            inputFocus.insert(END, value)

最佳答案

您可以调用keyboardFrame.focus_get() 获取获得焦点的窗口对象。

关于python - 检查哪个条目被聚焦(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607536/

相关文章:

python - 如何使用 Python C API 在已编译的 C 模块中实现 Python 数组

python - 在 Pandas 中设置联盟

c++ - 将 hls 直播转换为 rtmp

python - 如何reshape()numpy中奇数行和偶数行的总和

javascript 警报不能与 if 语句一起正常工作

python - 如何为 REST Api 功能设置 Python

python - Python 中的 Try/except 语法有两个相同的异常

python - 如何重新搜索或重新匹配整个文件而不将其全部读入内存?

javascript - 使用函数显示随机数,然后 ifelse 语句分配星期几

java - If-else 语句中的 While 循环 (Java)