Tkinter:如何停止在Entry小部件中输入?

时间:2018-11-08 17:33:04

标签: python tkinter

基本上,我希望能够在条目小部件中键入内容,完成输入后,我希望能够单击应用程序上的任何位置以停止键入。截至目前,它希望我不断在输入框中输入内容。有人知道阻止这种情况的方法吗?

import tkinter as tk

class window2:
    def __init__(self, master1):
        self.panel2 = tk.Frame(master1)
        self.panel2.grid()
        self.button1 = tk.Button(self.panel2,text="Button")
        self.button1.grid()
        self.text1 = tk.Entry(self.panel2)
        self.text1.grid()
        self.text1.focus()

root1 = tk.Tk()
root1.geometry("750x500")
window2(root1)
root1.mainloop()

1 个答案:

答案 0 :(得分:1)

我将其构建为Tk的继承类,然后绑定鼠标按钮1以将焦点更改为单击的任何小部件。

import tkinter as tk

class window2(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("750x500")
        panel2 = tk.Frame(self)
        panel2.grid()
        tk.Button(panel2,text="Button").grid()
        text1 = tk.Entry(panel2)
        text1.grid()
        text1.focus()
        self.bind("<1>", self.set_focus)

    def set_focus(self, event=None):
        x, y = self.winfo_pointerxy()
        self.winfo_containing(x, y).focus()


window2().mainloop()