gpt4 book ai didi

widget - 将事件绑定(bind)到单个字符 tcl/tk

转载 作者:行者123 更新时间:2023-12-02 05:00:59 25 4
gpt4 key购买 nike

我正在尝试在小部件(即文本、条目、标签)中显示二进制信息。单个字符,在本例中只有“0”或“1”应该是可点击的,以便它们在 0 和 1 之间切换。

我不太确定要使用哪个小部件以及如何将鼠标事件绑定(bind)到单个角色。

我希望有人能给我指出正确的方向,因为我对 TK 方面的事情还很陌生。

最佳答案

使这一切变得最简单的两个小部件是 canvastext .使用 Canvas ,您要么将数字字符串设为单个文本项,然后自己将点击位置转换为字符索引,要么(更有可能)将每个字符设为其自己的文本项。 (这样一来,您就可以轻松地使每个角色具有单独的样式和可点击性,但您需要稍微注意事物的布局方面。)

但是,我认为文本小部件可能更合适。这使您可以在字符范围上设置标签,并且这些标签既可绑定(bind)又可设置样式。

pack [text .t -takefocus 0]
set binstring "01011010"
set counter 0
foreach char [split $binstring ""] {
set tag ch$counter
.t insert end $char $tag
.t tag bind $tag <Enter> ".t tag configure $tag -foreground red"
.t tag bind $tag <Leave> ".t tag configure $tag -foreground black"
.t tag bind $tag <1> [list clicked .t $tag $counter]
incr counter
}
proc clicked {w tag counter} {
global binstring
# Update the display
set idx [$w index $tag.first]
set ch [expr {![$w get $idx]}]
$w delete $idx
$w insert $idx $ch $tag
# Update the variable
set binstring [string replace $binstring $counter $counter $ch]
# Print the current state
puts "binstring is now $binstring"
}

关于widget - 将事件绑定(bind)到单个字符 tcl/tk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17099789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com