在python的tkinter中,如何制作一个Label,以便用鼠标选择文本?
题
在python的tkinter界面中,是否有一个配置选项可以更改Label,以便您可以选择Label中的文本然后将其复制到剪贴板?
编辑:
你如何修改这个“你好世界”?应用程序提供此类功能?
from Tkinter import *
master = Tk()
w = Label(master, text="Hello, world!")
w.pack()
mainloop()
解决方案
最简单的方法是使用高度为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()
您可以以类似的方式使用条目小部件。
其他提示
对上述代码进行了一些更改:
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()
浮雕需要平坦,以使其看起来像显示器的普通部分。 :)
您可以使用 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()
不隶属于 StackOverflow