2

我正在开发一个聊天应用程序项目,使用 tkinter,在 python 3.7 和 Windows 10 操作系统上运行。我想添加到我的应用程序中的一件事是打开 Windows 的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()

注意:触控键盘不是屏幕键盘。我不想使用这个键盘,因为它会作为一个新窗口而不是作为顶级窗口弹出,这会阻止我的聊天应用程序。更重要的是,它没有表情符号键盘 :) 打开屏幕键盘的一种简单方法是运行以下行:

import os

os.system('osk')

我一直在互联网上寻找解决方案,但他们似乎都在处理屏幕键盘。如果有人知道如何帮助我或将我转移到解释如何处理它的来源,他非常欢迎这样做,因为我现在被困住了:/

4

1 回答 1

1

试试这个(代码注释中的解释)

我认为这个目录在几乎所有 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()
于 2020-04-20T15:39:50.637 回答