繁体   English   中英

tcl/tk - 如何制作在 cursor position 中打开的无框 window 通过鼠标右键调用

[英]tcl/tk - how to make frameless window that open in the of cursor position invoked by button right of the mouse

这个想法是如何打开事件按钮旁边的弹出窗口 - 它是为了获得 Onclick 鼠标 Cursor Position

就是这样,当点击桌面上的任何地方时,你应该在鼠标指针位置调用Tcl/Tk中的程序。 这个Tcl/Tk t 程序应该是没有刺绣的,window 框架。

我知道我在 2017 年之前做了它,当时我使用Tcl/Tk 8.4只显示没有框架的 tk window。

现在我不记得我是怎么做到的,我需要有人的帮助来理清我的思绪。

要获取鼠标指针的当前绝对值 position,请使用winfo pointerxy $w$w用于确定您在 X11 意义上谈论的是哪个“显示”,现在已经无关紧要;您实际上可以使用那里有任何 window,但无论如何它都是必需的参数)。

要将(顶层)window 移动到指针,您需要设置它的几何形状。 结合两者,你会得到这个:

proc movewintoptr w {
    lassign [winfo pointerxy $w] x y
    wm geometry $w +$x+$y
}

您可能需要考虑稍微偏移 window。 (究竟如何最好地做到这一点取决于您在 window 中展示的内容;代码非常针对具体应用。)


要制作没有装饰的顶层 window,请执行以下操作:

toplevel $w
wm overrideredirect $w 1

请注意,默认情况下,未修饰的 windows 不能轻易被用户操纵。 您必须自己实施所有该部分(如果相关)。

是的, wm overrideredirect调用应该在创建顶层后很快; windows 一旦显示在屏幕上,通常不能在显示模式之间切换(这取决于 window 管理器的工作方式等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM