Python Tkinter выделите весь текст левой кнопкой мыши - PullRequest
0 голосов
/ 31 мая 2019

Я бы хотел, чтобы пользователь мог скопировать в буфер обмена текст из текстового виджета в tkinter, просто используя левую кнопку мыши. Как в случае: пользователь щелкает текст левой кнопкой мыши, весь текст в текстовом виджете выделяется (с синими линиями в окнах) и автоматически копируется в буфер обмена.

я пробовал оба метода frame.bind и clipboard_append, но он оказался неудачным

Я пробовал 2 варианта:

Вариант 1 с буфером обмена, этот работает, но в фоновом режиме (текст копируется при нажатии кнопки, а не когда пользователь нажимает на текст, также текст не выделяется синими линиями, как в окнах, поэтому пользователь не знает, что текст был скопирован, он просто копирует текст в фоновом режиме без ведома пользователя):

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)

1 Ответ

0 голосов
/ 31 мая 2019

попробуйте этот метод:

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

text_field.bind('<Button-1>', select_all)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...