Tk 최상위 윈도우 경로에 대해 사용되지 않는 이름을 생성하는 방법이 필요합니다. 이는 #auto
처럼 Itcl 객체에 사용됩니다.Tk 최상위 윈도우 경로에 고유 한 이름을 생성하는 방법은 무엇입니까?
어떻게하면됩니까? 어쩌면 Tk도 비슷한 유틸리티를 가지고 있을까요?
Tk 최상위 윈도우 경로에 대해 사용되지 않는 이름을 생성하는 방법이 필요합니다. 이는 #auto
처럼 Itcl 객체에 사용됩니다.Tk 최상위 윈도우 경로에 고유 한 이름을 생성하는 방법은 무엇입니까?
어떻게하면됩니까? 어쩌면 Tk도 비슷한 유틸리티를 가지고 있을까요?
, 나는 이런 식으로 뭔가를 사용 : 존재하지 않는 위젯의 이름을 반환하는 보장의
variable sequencecounter 0; # Don't touch outside this code!
proc unique {{parent ""}} {
variable sequencecounter
while {[winfo exists [set w $parent.w$sequencecounter]]} {
incr sequencecounter
}
return $w
}
. (TK는 더 심한 경쟁 조건이없는 알 수 있도록 단일 스레드를 실행하도록 보장한다.) 이런 식으로 사용 :
set top [toplevel [unique]]
set btn [button [unique $top] -text "Hi" -command { exit }]
pack $btn
은 아마 그것을 할 몇 가지 애호가 방법이 있습니다,하지만 고유 한 이름이 필요 내 경우에는, 난 그냥, 시간 데이터에서 기타 등의 많은있다
set systemTime [clock seconds];
set myname [concat [clock format $systemTime -format %H%M%S] ".myext"]
같은 것을 하나를 구성 다른 서식 지정 가능성.
우아하지는 않지만 내 물건에 대해 작업하고 있으며, 특정 트랙을 유지해야하는 경우에도 유용합니다. 나는 독특한 위젯 이름을 필요로 할 때
당신은 확실히 가능하다 같은 초에 두 개 이상의 이름을 생성하는 경우이 중단됩니다 창 경로 이름을 생성하려면이 작업을 수행해야합니다. –
사실입니다. 필자는 필요한 경우 추가 데이터를 끝에 추가하여 훨씬 더 독창적인지 확인하기 위해 몇 가지 추가 검사를 수행합니다. "사용자"속도 (예 : GUI)로 고유 한 이름을 만들 필요가 있지만 "프로그램"속도 (예 : 루프 등)로 실행하는 경우에는 유용하지 않다고 생각합니다. – JasonBourne
그러나 위젯 이름 자체의 고유 구성 요소 인 _subtle_ 메모리 누수가 생성됩니다. 예, 이것은 절대적으로 들리지만 실재이며 시간이 지남에 따라 많은 위젯을 생성하는 아주 오랫동안 실행중인 프로그램을 가지고 있다면 문제가 될 수 있습니다. (고유 한 이름을 만드는 다른 모든 스키마도 동일한 누출을 가지게됩니다. 문제는 이상한 이유로 Tk 인턴이 경로 이름 구성 요소를 사용한다는 것입니다.) –