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

如何在Python/PySimpleGUI的Entry组件中添加复制/粘贴菜单?

给PySimpleGUI的InputText组件添加右键复制/粘贴菜单

要给InputText输入框添加右键复制/粘贴菜单,你可以借助PySimpleGUI的右键菜单功能,结合自带的剪贴板操作方法来实现。下面是修改后的完整代码,包含复制、粘贴、全选这些常用功能:

import PySimpleGUI as sg

# 定义右键菜单选项
right_click_menu = ['', ['复制', '粘贴', '全选', '---', '退出']]

layout = [
    [sg.Text('UserName:', size=(15,1)), 
     sg.InputText(default_text='', key='USERNAME', size=(15,1), right_click_menu=right_click_menu)],
    [sg.Text('Password:', size=(15,1)), 
     sg.InputText(default_text='', key='PASSWORD', size=(15,1), right_click_menu=right_click_menu)],
    [sg.Button('Exit', bind_return_key=True)],
]

window = sg.Window('Copy/Paste', layout, element_justification='c')

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    # 处理复制事件
    elif event == '复制':
        # 获取当前聚焦的输入框
        focused_elem = window.find_element_with_focus()
        if focused_elem and hasattr(focused_elem, 'get'):
            text = focused_elem.get()
            sg.clipboard_set(text)
    # 处理粘贴事件
    elif event == '粘贴':
        focused_elem = window.find_element_with_focus()
        if focused_elem and hasattr(focused_elem, 'update'):
            paste_text = sg.clipboard_get()
            focused_elem.update(paste_text, append=False)  # 替换现有内容,若要追加可设append=True
    # 处理全选事件
    elif event == '全选':
        focused_elem = window.find_element_with_focus()
        if hasattr(focused_elem.Widget, 'select_range'):
            focused_elem.Widget.select_range(0, 'end')

window.close()

关键部分说明:

  • 右键菜单绑定:通过right_click_menu参数给每个InputText组件绑定右键菜单,选项里的---是分隔线,优化菜单布局。
  • 剪贴板操作:直接使用PySimpleGUI自带的sg.clipboard_set()和sg.clipboard_get()方法完成剪贴板读写,无需额外依赖。
  • 聚焦元素判断:用window.find_element_with_focus()定位当前右键操作的输入框,确保操作对象准确。
  • 全选实现:调用输入框底层tkinter组件的select_range方法,快速选中所有内容。

内容的提问来源于stack exchange,提问作者PyiPath2022

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:20:34