在python的tkinter界面中,是否有一个配置选项可以更改Label,以便您可以选择Label中的文本然后将其复制到剪贴板?
编辑:
您如何修改此“hello world”应用以提供此类功能?
from Tkinter import *
master = Tk()
w = Label(master, text="Hello, world!")
w.pack()
mainloop()
答案 0 :(得分:9)
最简单的方法是使用高度为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()
您可以以类似的方式使用条目小部件。
答案 1 :(得分:4)
对上述代码进行了一些更改:
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()
浮雕需要平坦,以使其看起来像显示器的普通部分。 :)
答案 2 :(得分:1)
尝试布莱恩·奥克利(Bryan Oakley)的答案。能够选择文本,但无法将其复制到剪贴板。这是一种解决方法。
from Tkinter import *
def focusText(event):
w.config(state='normal')
w.focus()
w.config(state='disabled')
master = Tk()
w = Text(master, height=1, borderwidth=0)
w.insert(1.0, "Hello, world!")
w.pack()
w.configure(state="disabled")
w.bind('<Button-1>', focusText)
mainloop()
除非小部件聚焦,否则我们无法复制文本。无论如何,我们将使用鼠标button1(左键单击)选择文本,因此将其绑定到一个功能,该功能可启用文本小部件,将焦点设置在该部件上,然后再次将其禁用。
答案 3 :(得分:0)
您可以使用SequentialPerAggregate
或SequencingPolicy
来选择文本
我真的觉得两者都很有用,使用文字真的很有帮助!在这里,我向您展示输入代码:
Text
答案 4 :(得分:0)
其他答案在文本框中插入文本而不是替换文本。当您只需要更改一次文本时,这很有效。但是,如果需要替换该行,则需要先删除该行。以下代码将解决此问题:
from tkinter import *
master = Tk()
w = Text(master, height=1)
w.delete(1.0, "end")
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()