В Python Tkinter, как я могу сделать метку, чтобы вы могли выделить текст с помощью мыши? - PullRequest
8 голосов
/ 21 октября 2009

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

EDIT:

Как бы вы изменили это приложение "hello world" для обеспечения такой функциональности?

from Tkinter import *

master = Tk()

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

mainloop()

Ответы [ 3 ]

9 голосов
/ 21 октября 2009

Самый простой способ - использовать отключенный текстовый виджет высотой в 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()

Вы можете использовать виджет ввода аналогичным образом.

4 голосов
/ 27 сентября 2010

Внесены некоторые изменения в вышеуказанный код:

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

Рельеф должен быть плоским, чтобы он выглядел как обычная часть дисплея. :)

0 голосов
/ 30 ноября 2018

Вы можете создавать тексты, которые можно выбрать, используя Text или 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...