Tcl/Tk 入門

Tk上のカーソル表示を消す

最終更新: [2005/11/03]
Copyright

カーソルを消した〜い

Tk でプレゼンテーション風のツールを作ったとして(というかしょぼいのを 作りつつあるのだが),そのときにはカーソル表示が邪魔になる.空のカー ソルというのが標準でされてたりカーソル表示を止めるというオプションでも あればいいのだが,残念ながらそれは Tk にはないようだ.調べてみる (man Tk_GetCursor(3)) とカーソル指定に X11 のビットマップや Windows のアイ コンを指定できるようなのでこれでカーソルを消す.
※ 妥協して標準で用意されている dot というカーソルを使うことも考えたの だが,X11 の dot カーソルは点でも,Windows 上だと白い○になってしまっ てダメだった.

指定秒後に消す

上の方法を使って一定時間マウスポインタ操作がなければカーソルを消すよう にしてみます.もちろんポインタが動いたら表示を再開します.
proc delcursor {} {
    global tcl_platform
    if {$tcl_platform(platform)=="windows"} {
        . configure -cursor "@null.Ico"
    } else {
        . configure -cursor "@null.xbm black"
    }
}

set cursor_motion 1
set cursor_vanish 0
proc cursorVanish {delay} {
    global cursor_motion cursor_vanish
    if {!$cursor_motion && !$cursor_vanish} {
	delcursor
	set cursor_vanish 1
    }
    set cursor_motion 0
    after $delay cursorVanish $delay
}
after 0 cursorVanish 4000
bind . <Motion> {
    %W configure -cursor left_ptr
    set cursor_vanish 0
    set cursor_motion 1
}

||Tcl/Tk 入門||

Mail-to: oshiro@mibai.tec.u-ryukyu.ac.jp