我正在做一个聊天应用程序的项目,使用tkinter,运行在python 3.7和Windows10操作系统上。我想添加到我的应用程序中的一件事,是打开Windows的Touch Keyboard的选项。
虽然你可以通过按下键盘的button on the taskbar来打开键盘,但我想从我的应用程序中访问它。我的想法是绑定一个入口小部件,作为我的应用程序的控制台行,绑定到一个事件,无论它何时发生,它都会使Touch Keyboard弹出。我可能会使用的事件是'<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。我不想使用这个键盘,因为它是一个新窗口,而不是Toplevel窗口,它会阻塞我的聊天应用程序。更重要的是,它没有Emoji键盘:)打开屏幕键盘的一个简单方法是运行以下代码行:
import os
os.system('osk')
我在互联网上到处寻找解决方案,但他们似乎都在处理屏幕上的键盘。如果有人知道如何帮助我或将我转移到一个解释如何处理它的来源,我们非常欢迎他这样做,因为我现在卡住了:/
发布于 2020-04-20 23:39:51
试试这个(代码注释中的解释)
我认为这个目录在几乎所有的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()
https://stackoverflow.com/questions/61325760
复制相似问题