Как я могу запустить приложение tkinter, которое не фокусируется, но остается всегда сверху?
Я использую библиотеку, которая вводит символы, как если бы они были введены с клавиатуры, и я хочусоздать приложение tkinter, которое показывает пользователю различные символы (виртуальную клавиатуру), но для ввода символов интересующее приложение должно иметь фокус, и я хочу, чтобы виртуальная клавиатура оставалась сверху (без взятияfocus).
Вот что я пробовал: в этом коде я минимизирую окно перед написанием символа, поэтому интересующее приложение фокусируется при написании символа, после чего я снова показываю окно:
from pynput.keyboard import Key, Controller
import tkinter as tk
import time
keyboard = Controller()
########################################################################
class MyApp(object):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
self.root = parent
self.root.title("Special Characters")
self.frame = tk.Frame(parent)
self.frame.bind("<Enter>", self.onHover)
self.frame.pack()
btn01 = tk.Button(self.frame, text="á", command=lambda: self.printChar('á')).grid(row=0,column=0)
btn02 = tk.Button(self.frame, text="é", command=lambda: self.printChar('é')).grid(row=0,column=1)
btn03 = tk.Button(self.frame, text="í", command=lambda: self.printChar('í')).grid(row=0,column=2)
btn04 = tk.Button(self.frame, text="ó", command=lambda: self.printChar('ó')).grid(row=1,column=0)
btn05 = tk.Button(self.frame, text="ú", command=lambda: self.printChar('ú')).grid(row=1,column=1)
btn06 = tk.Button(self.frame, text="ñ", command=lambda: self.printChar('ñ')).grid(row=1,column=2)
btn07 = tk.Button(self.frame, text="Á", command=lambda: self.printChar('Á')).grid(row=2,column=0)
btn08 = tk.Button(self.frame, text="É", command=lambda: self.printChar('É')).grid(row=2,column=1)
btn09 = tk.Button(self.frame, text="Í", command=lambda: self.printChar('Í')).grid(row=2,column=2)
btn10 = tk.Button(self.frame, text="Ó", command=lambda: self.printChar('Ó')).grid(row=3,column=0)
btn11 = tk.Button(self.frame, text="Ú", command=lambda: self.printChar('Ú')).grid(row=3,column=1)
btn12 = tk.Button(self.frame, text="Ñ", command=lambda: self.printChar('Ñ')).grid(row=3,column=2)
btnClose = tk.Button(self.frame, text="Close", command=self.closeWindow).grid(row=4,column=0,columnspan=3,rowspan=1)
#----------------------------------------------------------------------
def onHover(self, event):
self.root.focus_force()
def printChar(self, character):
""""""
self.root.withdraw()
time.sleep(0.1)
keyboard.press(character)
keyboard.release(character)
time.sleep(0.1)
self.root.deiconify()
def closeWindow(self):
self.root.destroy()
#----------------------------------------------------------------------
if __name__ == "__main__":
root = tk.Tk()
root.geometry("300x200")
root.call('wm', 'attributes', '.', '-topmost', '1')
app = MyApp(root)
root.mainloop()