You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Windows屏幕键盘设置为PySimpleGUI中sg.InputText的输入源?

在PySimpleGUI的sg.InputText中调用Windows屏幕键盘

要实现点击sg.InputText输入框时自动唤起Windows屏幕键盘(osk.exe),可以通过以下步骤完成:

核心思路

  1. 利用Python的subprocess模块启动Windows内置的屏幕键盘程序osk.exe
  2. 给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:41:38