下面的程序创建一个包含按钮的窗口。单击该按钮时,窗口将被图标化(最小化)。 3000 毫秒后,该窗口应该取消图标化并将其自身提升到所有其他窗口之上。当我使用
wish mywindow.tk
在 GNOME 桌面环境中运行程序时,单击按钮时窗口会按预期图标化。但是,它不会取消图标化,并且 3 秒后不会将自身提升到所有其他窗口之上。没有错误消息。
proc doSomething {} {
wm iconify .
after 3000 {
wm deiconify .
raise .
}
}
button .mybutton -text "Click me" -command doSomething
grid .mybutton
问题的原因是什么?在使用 GNOME 桌面环境时,如何取消 Tk 中窗口的图标并将其置于所有其他窗口之上?
对此您无能为力。 Tk 通过要求窗口管理器执行窗口去图标化和提升(
toplevel
)操作,但窗口管理器有权忽略该请求。低级 API 就是这样工作的,窗口管理器通常更愿意忽略他们认为不直接对应于真实用户活动的请求。
内部Tk小部件可以直接重新堆叠; Tk 始终自行处理这些呼叫。
对此感到抱歉。这本身不是 Tk 问题,而是窗口管理器策略。