Как сделать чтоб новое окно после закрытия старого становилось активным? tkinter, python

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2023
import tkinter
import time
while True:
    time.sleep(1)
    window = tkinter.Tk()
    entry = tkinter.Entry(window)
    entry.place(x=10, y=10)
    entry.focus_set()
    window.mainloop()

Этот код создает окно, которое принимает текст. Если окно закрыть, оно через секунду открывает новое такое же, но проблема-это новое окно не активно(туда нельзя писать текст до нажатия мышкой). Как это исправить?

Ответы

▲ 0Принят
import tkinter
import time
import ctypes
alt_key = 0x12
extended_key = 0x0001
key_up = 0x0002

#   store some stuff for win api interaction
set_to_foreground = ctypes.windll.user32.SetForegroundWindow
keybd_event = ctypes.windll.user32.keybd_event

def steal_focus():
    keybd_event(alt_key, 0, extended_key | 0, 0)
    set_to_foreground(window.winfo_id())
    keybd_event(alt_key, 0, extended_key | key_up, 0)

    entry.focus_set()

while True:
    window = tkinter.Tk()
    entry = tkinter.Entry(window)
    entry.place(x=10, y=10)
    entry.focus_set()
    entry.focus()
    window.after(20, steal_focus)
    window.attributes("-top", True)
    window.mainloop()