Dans tkinter en python, comment puis-je créer une étiquette telle que vous puissiez sélectionner le texte avec la souris?

StackOverflow https://stackoverflow.com/questions/1602106

  •  05-07-2019
  •  | 
  •  

Question

Dans l'interface tkinter de python, existe-t-il une option de configuration qui modifiera une étiquette de sorte que vous puissiez sélectionner le texte dans l'étiquette et ensuite le copier dans le presse-papiers?

EDIT:

Comment modifieriez-vous ce " hello world " application pour fournir une telle fonctionnalité?

from Tkinter import *

master = Tk()

w = Label(master, text="Hello, world!")
w.pack()

mainloop()
Était-ce utile?

La solution

Le moyen le plus simple consiste à utiliser un widget texte désactivé avec une hauteur de 1 ligne:

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()

Vous pouvez utiliser un widget d'entrée de la même manière.

Autres conseils

Modifications apportées au code ci-dessus:

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()

Le relief doit être plat pour qu'il ressemble à une partie ordinaire de l'écran. :)

Vous pouvez créer des textes sélectionnables à l'aide de Texte ou Entrée . Je trouve vraiment les deux utiles, utiliser du texte peut être vraiment utile! Ici, je vous montre un code d'entrée:

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top