如何在 canvas 中获取状态项
How to get state item in canvas
我只想获得具有 'normal state' 的项目,我跟踪了具有不同状态(隐藏和正常)的不同线,
实际上我使用:
foreach itemId [.c find all]
...
我这样试过,但没用
set state [.c itemcget $tag state]
set state [$itemId cget state]
谢谢
canvas中的项目可以有三种不同的状态,即正常、禁用或隐藏。这是真的,除了在没有指定状态的情况下创建的项目的状态,在这个意义上这个项目没有任何状态。
如果你创建一个状态正常的项目,你会做:
.c create item -state normal
假设此项目的 ID 为 1。执行 .c itemcget 1 -state
会得到 normal
。
如果您在没有指定状态的情况下创建另一个项目...
.c create item
假设它的 ID 为 2,那么 .c itemcget 1 -state
将得到一个空字符串。
本质上,normal和'nothing'是一样的。您可以通过以下方式查看特定项目的所有选项:
.c itemconfigure tagOrId
对于第 1 项,您会注意到您有 -state {} {} {} {normal}
,对于第 2 项,您将有 -state {} {} {} {}
.
总而言之,要获得所有状态正常的项目 ID 的列表,您可以这样做:
set normalItems [list]
foreach itemId [.c find all] {
set state [.c itemcget $itemId -state]
if {$state eq "" || $state eq "normal"} {
lappend normalItems $itemId
}
}
如果你想让 if 条件更短,请使用 $state in {"" "normal"}
。
注意:pathName cget state
用于获取canvas的状态,而不是canvas中的项目。
我只想获得具有 'normal state' 的项目,我跟踪了具有不同状态(隐藏和正常)的不同线, 实际上我使用:
foreach itemId [.c find all]
...
我这样试过,但没用
set state [.c itemcget $tag state]
set state [$itemId cget state]
谢谢
canvas中的项目可以有三种不同的状态,即正常、禁用或隐藏。这是真的,除了在没有指定状态的情况下创建的项目的状态,在这个意义上这个项目没有任何状态。
如果你创建一个状态正常的项目,你会做:
.c create item -state normal
假设此项目的 ID 为 1。执行 .c itemcget 1 -state
会得到 normal
。
如果您在没有指定状态的情况下创建另一个项目...
.c create item
假设它的 ID 为 2,那么 .c itemcget 1 -state
将得到一个空字符串。
本质上,normal和'nothing'是一样的。您可以通过以下方式查看特定项目的所有选项:
.c itemconfigure tagOrId
对于第 1 项,您会注意到您有 -state {} {} {} {normal}
,对于第 2 项,您将有 -state {} {} {} {}
.
总而言之,要获得所有状态正常的项目 ID 的列表,您可以这样做:
set normalItems [list]
foreach itemId [.c find all] {
set state [.c itemcget $itemId -state]
if {$state eq "" || $state eq "normal"} {
lappend normalItems $itemId
}
}
如果你想让 if 条件更短,请使用 $state in {"" "normal"}
。
注意:pathName cget state
用于获取canvas的状态,而不是canvas中的项目。