В python tkinter, как я могу создать ярлык, чтобы вы могли выбрать текст с помощью мыши?
В интерфейсе python tkinter есть ли параметр конфигурации, который изменит ярлык, чтобы вы могли выбрать текст в ярлыке, а затем скопировать его в буфер обмена?
EDIT:
Как бы вы изменили это приложение "hello world", чтобы обеспечить такую функциональность?
from Tkinter import *
master = Tk()
w = Label(master, text="Hello, world!")
w.pack()
mainloop()
Ответы
Ответ 1
Самый простой способ - использовать отключенный текстовый виджет с высотой 1 строки:
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()
Вы можете использовать виджет ввода аналогичным образом.
Ответ 2
Внесены некоторые изменения в приведенный выше код:
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()
Рельеф должен быть плоским, чтобы он выглядел как обычная часть дисплея. :)
Ответ 3
Вы можете создавать тексты, которые можно выбрать, используя Text
или Entry
Я действительно нахожу оба полезных, использование текста может быть действительно полезно! Здесь я покажу вам код Entry:
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()