【发布时间】: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。
-
“不起作用”是什么意思?程序会崩溃吗?它会在剪贴板上放错东西吗?还有什么?