0
我期待得到的只是有一个“正常国家”的项目国家项目,我跟踪与不同状态不同的线路(隐藏和正常), 其实我用:如何获得在画布
foreach itemId [.c find all]
...
我想这样的,但它一点儿也不工作
set state [.c itemcget $tag state]
set state [$itemId cget state]
谢谢
我期待得到的只是有一个“正常国家”的项目国家项目,我跟踪与不同状态不同的线路(隐藏和正常), 其实我用:如何获得在画布
foreach itemId [.c find all]
...
我想这样的,但它一点儿也不工作
set state [.c itemcget $tag state]
set state [$itemId cget state]
谢谢
一个项目在一个画布可以有三种差别的状态,即正常,禁用或隐藏。这是真的,除了没有指定状态的情况下创建的项目的状态,就是说这个项目没有任何状态。
如果创建一个状态正常的项目,你会怎么做:
.c create item -state normal
比方说,这个项目有ID 1.做.c itemcget 1 -state
会给你normal
。
如果没有指定国家创造另一个项目...
.c create item
,并假定它具有ID 2,然后做.c itemcget 1 -state
会给你一个空字符串。
基本上,正常和'没有'是相同的。您可以查看特定项目的所有选项有:
.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
}
}
或者使用$state in {"" "normal"}
如果你想如果条件更短。
注意:pathName cget state
用于获取画布的状态,而不是画布中的项目。
你好,谢谢你的解释。 – Nirvan