在Python的tkinter中,如何创建一个可以用鼠标选择文本的Label?

29 投票
5 回答
32524 浏览
提问于 2025-04-15 15:15

在Python的tkinter界面中,有没有什么设置可以让Label中的文字可以被选中,然后复制到剪贴板呢?


那么,如何修改这个“你好,世界”的应用程序来实现这个功能呢?

from Tkinter import *

master = Tk()

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

mainloop()

5 个回答

5

对上面的代码做了一些修改:

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

这个凸起部分需要是平的,这样看起来才像显示器上普通的一部分。 :)

6

你可以使用 TextEntry 来创建可以选择的文本。我觉得这两者都很有用,使用文本功能真的很方便!下面我给你展示一个关于 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()
19

最简单的方法是使用一个禁用的文本框,设置高度为一行:

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

你也可以用输入框来做类似的事情。

撰写回答