我正在尝试使用C / GTK3 / Cairo实现以下功能:
-Left点击 GtkDrawingArea 小部件,然后打印坐标Xo和Yo。
- 在保持左按钮的同时,移动鼠标并绘制一条线(Xo,Yo)到当前鼠标位置。
- 释放鼠标左键和printf("某些东西")
我该怎么做?任何人都知道一个很好的教程,展示如何处理鼠标clicl-move事件?
到目前为止,我发现的最好的是这个zetcode lines(它显示了如何处理鼠标点击事件但不显示按钮按下/移动/按钮和this,这解释了如何更改将鼠标光标悬停在Widget上时。
由于
答案 0 :(得分:1)
你有没有看到Gtk人的this GtkDrawingArea demo?这个是用C语言编写的,但是there is a Python version是同一个程序。可惜它的格式不是很好。
无论如何,在构造函数(__init__
)中,调用已连接到motion_notify_event
。
您还需要连接到button_press_event
和button_release_event
。
然后,按下按钮,可以保存起点的坐标。 (并将其保存到终点,现在也是如此)。
在每个motion_notify_event上,删除上一行(通过覆盖),并将其重绘为新的结束点。
最后,当释放按钮时,该行是最终的。
如果你使用画布小部件,那么很多会更容易,例如GooCanvas,负责大部分的更新。您只需更新线对象的坐标,它就会自动移动。您也可以轻松删除线条。 '算法'与上面类似:
button_press_event
,button_release_event
和motion_notifyevent
连接到画布,GooCanvas.polyline
对象,并设置begin和endpoint,motion_notify_event
button_release_event
完成。