我正在使用 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/