No tkinter do python, como posso criar um Label para que você possa selecionar o texto com o mouse?
Pergunta
Na interface tkinter do python, existe uma opção de configuração que alterará um rótulo para que você possa selecionar o texto no rótulo e copiá-lo para a área de transferência?
EDITAR:
Como você modificaria este aplicativo "olá mundo" para fornecer tal funcionalidade?
from Tkinter import *
master = Tk()
w = Label(master, text="Hello, world!")
w.pack()
mainloop()
Solução
A maneira mais fácil é usar um widget de texto desativado com uma altura de 1 linha:
from Tkinter import *
master = Tk()
w = Text(master, height=1, borderwidth=0)
w.insert(1.0, "Hello, world!")
w.pack()
w.configure(state="disabled")
# if tkinter is 8.5 or above you'll want the selection background
# to appear like it does when the widget is activated
# comment this out for older versions of Tkinter
w.configure(inactiveselectbackground=w.cget("selectbackground"))
mainloop()
Você pode usar um widget de entrada de maneira semelhante.
Outras dicas
Fez algumas alterações no código acima:
from tkinter import *
master = Tk()
w = Text(master, height=1)
w.insert(1.0, "Hello, world!")
w.pack()
# if tkinter is 8.5 or above you'll want the selection background
# to appear like it does when the widget is activated
# comment this out for older versions of Tkinter
w.configure(bg=master.cget('bg'), relief=FLAT)
w.configure(state="disabled")
mainloop()
O alívio precisa ser plano para que pareça uma parte comum da tela. :)
Você pode criar textos selecionáveis usando Text
ou Entry
Eu realmente acho ambos úteis, usar texto pode ser muito útil!Aqui mostro um código de entrada:
from tkinter import *
root = Tk()
data_string = StringVar()
data_string.set("Hello World! But, Wait!!! You Can Select Me :)")
ent = Entry(root,textvariable=data_string,fg="black",bg="white",bd=0,state="readonly")
ent.pack()
root.mainloop()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow