我正在使用tkinter在python 3.7和Windows 10 OS上运行的聊天应用程序的一个项目中醒来。我想添加到我的应用程序中的一件事是可以打开Windows的Touch Keyboard。
尽管您可以通过按下键盘上的button on the taskbar来打开键盘,但我还是希望可以从我的应用中访问它。我的想法是将一个Entry小部件(用作我的应用程序的控制台行)绑定到一个事件,该事件一旦发生,就会使触摸键盘弹出。我可能会使用的事件是'<FocusIn>'
,这意味着键盘焦点已移至该事件。这是一个简单的机制示例:
def open_keyboard(event):
pass # open the Touch Keyboard
root = Tk()
console = Entry(root, font=('Verdana', 14), cursor='pencil', bg='red', fg='yellow') # creating console
console.pack()
console.bind('<FocusIn>', open_keyboard) # bind the console to the event
root.mainloop()
注意:触摸键盘不是On-Screen Keyboard。我不想使用此键盘,因为它会弹出一个新窗口,而不是一个顶级窗口,这会阻止我的聊天应用程序。更重要的是,它没有表情符号键盘:) 打开屏幕键盘的一种简单方法是运行以下几行:
import os
os.system('osk')
我一直在互联网上寻找解决方案,但是他们似乎都在使用屏幕键盘。如果有人知道如何帮助我或将我转移到说明如何处理它的资源上,那么他非常乐意这样做,因为我现在就被困住了:/
答案 0 :(得分:0)
尝试一下(代码注释中的说明)
我认为该目录在几乎所有Windows安装中都将相同,但我仍在寻找一种使其路径独立的方法。
from tkinter import *
import os
root = Tk()
def callback(event):
# so the touch keyboard is called tabtip.exe and its located in C:\Program Files\Common Files\microsoft shared\ink
# here we run it after focus
os.system("C:\\PROGRA~1\\COMMON~1\\MICROS~1\\ink\\tabtip.exe")
frame = Frame(root, width=100, height=100)
frame.pack()
addressInput = Entry(frame, font = "Verdana 20 ", justify="center")
addressInput.bind("<FocusIn>", callback)
addressInput.pack()
root.mainloop()