能否将Windows屏幕键盘设置为PySimpleGUI中sg.InputText的输入源?
在PySimpleGUI的sg.InputText中调用Windows屏幕键盘
要实现点击sg.InputText输入框时自动唤起Windows屏幕键盘(osk.exe),可以通过以下步骤完成:
核心思路
- 利用Python的
subprocess模块启动Windows内置的屏幕键盘程序osk.exe - 给
sg.InputText绑定焦点进入事件(<FocusIn>),触发时启动屏幕键盘
完整代码示例
import PySimpleGUI as sg import subprocess def launch_osk(): """启动Windows屏幕键盘""" try: # 启动osk.exe,shell=True确保在不同环境下能正确定位程序 subprocess.Popen("osk.exe", shell=True) except Exception as e: sg.popup_error(f"启动屏幕键盘失败:{str(e)}") # 构建界面布局 layout = [ [sg.Text("请输入内容:"), sg.InputText(key="-INPUT_FIELD-", size=(30, 1))], [sg.Button("退出")] ] window = sg.Window("PySimpleGUI 屏幕键盘整合示例", layout) # 给输入框绑定焦点进入事件 window["-INPUT_FIELD-"].bind("<FocusIn>", "_FOCUS_ENTER") # 事件循环 while True: event, values = window.read() if event in (sg.WIN_CLOSED, "退出"): break # 检测输入框获得焦点的事件 if event == "-INPUT_FIELD-_FOCUS_ENTER": launch_osk() window.close()
额外说明
- 系统兼容性:此方案仅适用于Windows系统,因为
osk.exe是Windows专属的内置工具 - 屏幕键盘样式调整:若需要拆分键盘为多行,可在屏幕键盘打开后,点击右上角的选项菜单,选择"拆分键盘"即可;如需通过代码预设该布局,需修改注册表项
HKEY_CURRENT_USER\Software\Microsoft\Osk下的Layout键值(值为1对应拆分布局),但修改注册表需谨慎操作,建议提前备份 - 关闭键盘:默认情况下屏幕键盘需手动关闭,若要实现输入框失焦时自动关闭,可监听
<FocusOut>事件并终止osk.exe进程,但需注意可能影响用户在其他场景使用屏幕键盘,需谨慎采用
内容的提问来源于stack exchange,提问作者PyiPath2022
相关产品推荐
相关产品推荐

