如何使用python打开触摸键盘?

时间:2020-04-20 15:10:47

标签: python python-3.x windows tkinter keyboard

我正在使用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')

我一直在互联网上寻找解决方案,但是他们似乎都在使用屏幕键盘。如果有人知道如何帮助我或将我转移到说明如何处理它的资源上,那么他非常乐意这样做,因为我现在就被困住了:/

1 个答案:

答案 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()