Tkinter: Как перестать печатать в виджете Entry? - PullRequest
0 голосов
/ 08 ноября 2018

По сути, я хочу иметь возможность вводить что-то в виджет ввода, и когда я закончу печатать, я хочу иметь возможность щелкнуть в любом месте приложения, чтобы прекратить печатать. На данный момент он хочет, чтобы я постоянно что-то печатал в поле ввода. Кто-нибудь знает способ остановить это?

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 голосов
/ 08 ноября 2018

Я бы построил это как унаследованный класс для 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...