Дайте возможность пользователю копировать текст в графическом интерфейсе tkinter

#python #python-3.x #url #tkinter

Вопрос:

В этом коде, когда пользователь вводит ссылку, отображается краткая версия ссылки, но она не дает пользователю возможности скопировать ссылку из графического интерфейса. Как мне это исправить?

 import pyshorteners as pr
from tkinter import *

root = Tk()
e = Entry(root, width=50)
e.pack()


def click():
    link = e.get()
    shortener = pr.Shortener()
    Short_Link = shortener.tinyurl.short(link)
    Label1 = Label(root, text=Short_Link)
    Label1.pack()


Button1 = Button(root, text="Enter link:", command=click)
Button1.pack()

root.mainloop()
 

Комментарии:

1. вы можете использовать какую-либо кнопку для копирования текста или скопировать его автоматически, или вы можете bind нажать кнопку Ctrl C «Окно». или вы можете отобразить его, Entry а затем выбрать текст и использовать Ctrl C

Ответ №1:

Вы не можете напрямую скопировать текст из виджета метки Tkinter с помощью CTRL C.

Это простое приложение Tkinter для копирования текста метки в буфер обмена:

 from tkinter import *
from tkinter.messagebox import showinfo


class CopyLabel(Tk):
    def __init__(self, text: str):
        super(CopyLabel, self).__init__()

        self.title('Copy this Label')

        self.label_text = text
        self.label = Label(self, text=text)
        self.label.pack(pady=10, padx=40)

        self.copy_button = Button(self, text='COPY TO CLIPBOARD', command=self.copy)
        self.copy_button.pack(pady=5, padx=40)

    def copy(self):
        self.clipboard_clear()
        self.clipboard_append(self.label_text)

        self.update()

        showinfo(parent=self, message='Copied to clipboad!')


if __name__ == "__main__":
    app = CopyLabel('Copy me!')
    app.mainloop()
 

В вашем коде для автоматического копирования короткой ссылки вы можете сделать:

 import pyshorteners as pr
from tkinter import *

root = Tk()
e = Entry(root, width=50)
e.pack()


def click(master: Tk):
    link = e.get()
    shortener = pr.Shortener()
    Short_Link = shortener.tinyurl.short(link)
    master.clipboard_clear()
    master.clipboard_append(Short_Link)
    master.update()
    Label1 = Label(root, text=Short_Link)
    Label1.pack()

Button1 = Button(root, text="Enter link:", command=lambda: click(root))
Button1.pack()

root.mainloop()