Как открыть сенсорную клавиатуру с помощью python? - PullRequest
2 голосов
/ 20 апреля 2020

Я работаю над проектом приложения для чата с использованием tkinter, работающего на ОС python 3.7 и Windows 10. Одной из вещей, которую я хотел бы добавить в свое приложение, является возможность открытия Windows сенсорной клавиатуры .

Хотя вы можете открыть клавиатуру, нажав ее кнопка на панели задач , я хотел бы дать доступ к ней из моего приложения. Моя идея состоит в том, чтобы связать виджет 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()

ВНИМАНИЕ: Сенсорная клавиатура НЕ является экранной клавиатурой . Я не хочу использовать эту клавиатуру, потому что она появляется как новое окно, а не как окно Toplevel, которое блокирует мое приложение для чата. Что еще более важно, у него нет клавиатуры Emoji :) Простой способ открыть экранную клавиатуру, запустив следующие строки:

import os

os.system('osk')

Я искал по всему rnet решение, но все они, кажется, обрабатывают экранную клавиатуру. Если кто-то знает, как мне помочь или перенаправить меня к источнику, который объясняет, как с этим обращаться, он более чем рад этому, потому что я застрял прямо сейчас: /

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте это (объяснение в комментарии к коду)

Я думаю, что этот каталог будет одинаковым почти на всех 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...