【问题标题】:How to open the Touch Keyboard using python?如何使用python打开触摸键盘?
【发布时间】:2020-08-03 03:36:24
【问题描述】:

我正在开发一个聊天应用项目,使用 tkinter,在 python 3.7 和 Windows 10 操作系统上运行。我想添加到我的应用程序中的一件事是打开 Windows 的 Touch Keyboard 的选项。

虽然您可以通过按button on the taskbar 来打开键盘,但我想通过我的应用程序访问它。我的想法是将一个条目小部件(用作我的应用程序的控制台行)绑定到一个事件,只要它发生,它就会弹出触摸键盘。我可能会使用的事件是'<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')

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

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 嘿,它工作得很好,除了一件事:当我关闭键盘时,我无法再次打开它,除非我最小化窗口并再次展开它。换句话说,它只识别发生的第一个事件,而不识别随后发生的事件。我尝试将事件更改为 (鼠标单击事件),但它似乎是相同的。你知道如何解决它吗?
    • @RoeiDuvdevani 这不是event 的问题。绑定工作得很好。
    • 为了处理关闭后键盘不显示的问题,请确保在重新启动之前结束进程:os.system('wmic process where name="TabTip .exe"删除')
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2016-04-18
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多