【问题标题】:Python Tkinter select whole text with left clickPython Tkinter用左键单击选择整个文本
【发布时间】:2026-01-05 05:55:02
【问题描述】:

我希望用户能够通过使用鼠标左键将文本从 tkinter 中的文本小部件复制到剪贴板。如:用户用鼠标左键单击文本,文本小部件中的整个文本被选中(窗口中的蓝线)并自动复制到剪贴板。

我已经尝试了 frame.bind 方法和 clipboard_append 但都不成功

我尝试了 2 个选项:

带有剪贴板的选项 1,此选项有效,但在后台(单击按钮时复制文本,而不是当用户单击文本时复制文本,也没有像在 Windows 中那样用蓝线选择文本,因此用户不知道文本被复制,它只是在用户不知情的情况下在后台复制文本):

field_value = self.txt.get("1.0", 'end-1c')  # get field value from event, but remove line return at end
txt_frm.clipboard_clear()  # clear clipboard contents
txt_frm.clipboard_append(field_value)  # append new value to clipbaord

选项2与按钮的绑定方法,这个根本不起作用:

def copy_text_to_clipboard(event):
    field_value = event.widget.get("1.0", 'end-1c')
    window.clipboard_clear()  # clear clipboard contents
    window.clipboard_append(field_value)  # append new value to clipbaord


    text_field.bind("<Button-1>", copy_text_to_clipboard)

【问题讨论】:

  • 已经有一个写得很好的答案here
  • “不起作用”是什么意思?程序会崩溃吗?它会在剪贴板上放错东西吗?还有什么?

标签: python tkinter


【解决方案1】:

试试这个方法:

def select_all(event=None):
    text_field.select_range(0, END)
    return "break"

text_field.bind('<Button-1>', select_all)

【讨论】: