重点事件(或缺乏事件)



我很难使用TK中的Python版本3中的输入和文本框字段的焦点事件。如果我单击无线电选项或按钮,我最终需要验证丢失焦点的入口框。

如果您在下面运行代码(仅用于证明焦点问题而不是我在其他地方需要的验证),请将光标放置在两个顶部排入框中,然后在其他小部件之间单击,这是唯一的时间focusin和focusin发生的事件发生在接受输入IE文本/输入框的小部件上。

单击按钮或无线电选项,光标保留在条目或文本框小部件中。为什么当我明确专注于无线电选项或按钮时。

我尝试了.bind focusin/out事件,但仍然没有欢乐。如果有人有解释,我会很感兴趣,知道为什么以及可能如何克服它。

from tkinter import *
root = Tk()
root.title("My Widgets")
root.update_idletasks()
root.geometry("350x200+10+300")
root.attributes("-toolwindow",1)
root.resizable(width=FALSE, height=FALSE)
root.config(bg="blue")
# function below output to the console and label the focus results
def Validate(a,b,c,d,e,f,g,h):
    text = g + ' on ' + h
    lblOutputVar.set(text)
    print(f,g,h)
    return True
var = IntVar()
lblOutputVar = StringVar()
vcmd=(root.register(Validate),'%d','%i','%P','%s','%S','%v','%V','%W')
entryOne = Entry(root, name = 'entryBoxOne')
entryOne.config(validate = 'all',vcmd=vcmd)
entryOne.grid(row=1, column=1,padx=(0,0),pady=(10,10),ipady=(1), sticky=E+W)
entryTwo = Entry(root, name = 'entryBoxTwo')
entryTwo.config(validate = 'all',vcmd=vcmd)
entryTwo.grid(row=1, column=2,padx=(10,0),pady=(10,10),ipady=(1), sticky=E+W)
txtBox = Text(root, name = 'textBox', width=10, height=1, takefocus = 0)
txtBox.grid(row=5, column=1, sticky=E+W)
aButton = Button(root, text = 'Click Me!', takefocus=1)
aButton.grid(row=5, column=2)
lblOutput = Label(root, name = 'labelOutput', width=20, height=2, textvariable=lblOutputVar)
lblOutput.grid(row=10, column=1, columnspan =2, pady=(5,0), sticky=E+W)
radioOne = Radiobutton(root, anchor = 'w', text = 'One', variable = var, value = 1, takefocus = 1)
radioOne.grid(row=2, column=1, sticky=E+W)
radioTwo = Radiobutton(root, anchor = 'w', text = 'Two', variable = var, value = 2, takefocus = 1)``
radioTwo.grid(row=3, column=1, sticky=E+W)
root.mainloop()

说明简单的说法是,当您单击它们时,没有给予tkinter按钮和radiobuttons。如果您希望发生这种情况,则需要设置一个绑定以明确地给他们重点。

您的另一个选择是使用 do d de fot focus的ttk radiobutton。不幸的是,这两个不同的放射线量具有不同的行为。

相关内容

  • 没有找到相关文章

最新更新