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