我在Tcl Tk中创建标签,但是他们的文字不可选(用于复制粘贴)。我如何选择?
我使用以下标签来创建标签:
set n 0
foreach t $list_of_labels {
incrr n
set lbl2 [label .prop_menu.main_frame.val_$n -text $t]
grid $lbl2 ...
}
答案 0 :(得分:1)
如果不从其他小部件中获取大量绑定代码并将其应用于您的标签,则无法做到。如果你需要这个,你最好采用一个入口小部件,使它看起来像一个标签。类似的东西:
entry .e1 -textvar t -relief flat -background [$parentWindow cget -background]
如果您不希望焦点转移到这些,请添加-takefocus 0
。
答案 1 :(得分:0)
如果标签中的文本可以选择 en masse ,则必须应用绑定,以便程序知道何时选择它(而不是其他东西)并且必须有一些代码将代码放入选择(或更确切地说是剪贴板)。后者实际上很容易使用clipboard
命令:
clipboard clear
clipboard append $text
尴尬的一点是设置绑定,显示选择已经发生。最简单的只是做一些像这样的跛脚(绑定到鼠标点击):
bind .lbl <1> {
clipboard clear
clipboard append [%W cget -text]
bell
}
好的,这绝对是蹩脚的;你可以做得更好!你不会得到的是Windows内置标签经常支持的突出显示风格(你可以拖出一个选择,只需按 Ctrl + C )需要能够绘制突出显示,而Tk的标签小部件根本没有。 (您可以使用条目来破解某些内容,但是它们不能执行多行文本,或者您可以使用文本小部件,但是您必须使用绑定执行批次工作以使其表现为你想要。)
答案 2 :(得分:0)
我通过使用只读条目解决了它,我用:
替换了标签的创建set lbl2 [entry .prop_menu.main_frame.val_$n -relief flat]
$lbl2 insert 0 $t
$lbl2 configure -state readonly
并且能够创建像标签一样但可以选择的条目。