首页 >> 大全

Go版GTK:常用事件—鼠标事件

2023-08-09 大全 21 作者:考证青年

鼠标事件,可以理解为操作鼠标的动作。对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即为鼠标事件。

窗口默认不捕获鼠标的操作,需要手动添加让其捕获:

    //添加鼠标按下事件//BUTTON_PRESS_MASK: 鼠标按下,触发信号"button-press-event"//BUTTON_RELEASE_MASK:鼠标抬起,触发"button-release-event"//鼠标移动都是触发"motion-notify-event"//BUTTON_MOTION_MASK: 鼠标移动,按下任何键移动都可以//BUTTON1_MOTION_MASK:鼠标移动,按住左键移动才触发//BUTTON2_MOTION_MASK:鼠标移动,按住中间键移动才触发//BUTTON3_MOTION_MASK:鼠标移动,按住右键移动才触发window.SetEvents(int(gdk.BUTTON_PRESS_MASK | gdk.BUTTON1_MOTION_MASK))

事件标识:

事件标识触发条件

“-press-event”

_网吧常用鼠标

鼠标按下时触发

“--event”

鼠标抬起时触发

“--event”

按住鼠标移动时触发

示例代码:

package mainimport ("fmt""os""unsafe""github.com/mattn/go-gtk/gdk""github.com/mattn/go-gtk/glib""github.com/mattn/go-gtk/gtk"
)func main() {gtk.Init(&os.Args)window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) //新建窗口window.SetDefaultSize(480, 320)              //设置大小//鼠标按下事件处理window.Connect("button-press-event", func(ctx *glib.CallbackContext) {//获取鼠键按下属性结构体变量,系统内部的变量,不是用户传参变量arg := ctx.Args(0)event := *(**gdk.EventButton)(unsafe.Pointer(&arg))if event.Type == int(gdk.BUTTON_PRESS) { //单击fmt.Printf("单击, ")} else if event.Type == int(gdk.BUTTON2_PRESS) { //双击fmt.Printf("双击, ")}//fmt.Println("button = ", event.Button)if event.Button == 1 {fmt.Printf("左键, ")} else if event.Button == 2 {fmt.Printf("中间键, ")} else if event.Button == 3 {fmt.Printf("右键, ")}fmt.Println("坐标:", int(event.X), int(event.Y))})//鼠标移动事件处理window.Connect("motion-notify-event", func(ctx *glib.CallbackContext) {//获取鼠标移动属性结构体变量,系统内部的变量,不是用户传参变量arg := ctx.Args(0)event := *(**gdk.EventMotion)(unsafe.Pointer(&arg))fmt.Println("移动坐标:", int(event.X), int(event.Y))})//添加鼠标按下事件//BUTTON_PRESS_MASK: 鼠标按下,触发信号"button-press-event"//BUTTON_RELEASE_MASK:鼠标抬起,触发"button-release-event"//鼠标移动都是触发"motion-notify-event"//BUTTON_MOTION_MASK: 鼠标移动,按下任何键移动都可以//BUTTON1_MOTION_MASK:鼠标移动,按住左键移动才触发//BUTTON2_MOTION_MASK:鼠标移动,按住中间键移动才触发//BUTTON3_MOTION_MASK:鼠标移动,按住右键移动才触发window.SetEvents(int(gdk.BUTTON_PRESS_MASK | gdk.BUTTON1_MOTION_MASK))window.Connect("destroy", gtk.MainQuit) //关闭窗口window.ShowAll()                        //显示控件gtk.Main()
}

坐标说明:

这里写图片描述

程序运行效果:

这里写图片描述

网吧常用鼠标_

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了