- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 Python 和 gnomecanvas 制作一个简单的绘图应用程序。可悲的是,似乎没有关于 gnomecanvas 的 Python 绑定(bind)的任何文档。因此,我笨手笨脚地使用代码示例并尝试从 C 绑定(bind)中进行猜测。
事实上,我通过在笔画中保留当前点列表并在每个新项目处从该列表生成一个新路径对象来使代码工作:
def get_pointer_coords(self, event):
return self.window_to_world(event.x, event.y)
def render_path(self):
path_def = gnomecanvas.path_def_new(self.cur_path)
self.current_item.set_bpath(path_def)
def button_press(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if is_core:
return
self.drawing = True
(x, y) = self.get_pointer_coords(event)
self.cur_path = [(gnomecanvas.MOVETO_OPEN, x, y)]
self.current_item = self.root().add( gnomecanvas.CanvasBpath
, outline_color="#A6E22E"
, width_pixels=1
, cap_style=gdk.CAP_ROUND
)
def button_release(self, event):
self.drawing = False
def motion_notify(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if not is_core and self.drawing:
(x, y) = self.get_pointer_coords(event)
self.cur_path.append((gnomecanvas.LINETO, x, y))
self.render_path()
在我看来,这是一种相当低效的方法:每次指针移动时都生成一个新对象;并且考虑到我从我的平板电脑获得亚像素精度,这是相当频繁。
我的问题是:有没有一种方法可以让我像在这个库的 C 版本中那样简单地附加到每个指针运动的现有 bpath 上?
在相关说明中,是否有此 API 的任何文档,因为我已经进行了数小时的谷歌搜索,但没有给我任何返回。
最佳答案
原生 C API 上有很好的 libgnomecavas 2.3 文档,其中包含与 gnomecanvas 一起使用的所有 C 函数的描述。
Python 绑定(bind)通常不会公开所有描述的 API,特别是您想要的功能,并且没有关于 gnome Canvas 的 Python 绑定(bind)的文档,所有力量都被派去开发与 Gnome3 相关的东西(您可以在 live.gnome.org 探索它).
另一件事是 gnomecavas 和 Python 绑定(bind)已经过时了;并且没有计划在未来支持它们(例如,最近几个版本的 Ubuntu 只是将这个包从一个版本复制到另一个版本而没有任何更改)。
但是还有另一个名为 GooCanvas 的 Canvas 库,它使用 Cairo 在屏幕上绘图并且似乎是最新的,具有 PyGooCanvas Python 绑定(bind)并被一些广泛的项目使用,例如 Pitivi。
关于python - 有没有办法在 Python 中附加到现有的 gnome canvas bpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397572/
我有一个脚本,需要在用户通过 nx 客户端登录后启动。据我了解,Gnome 在用户登录后启动(如果我错了,请纠正我)。我应该把脚本放在哪里,以便它在用户登录后启动? 相关信息:我正在一台 redhat
我想通过我的 shell 扩展支持多个 GNOME 版本。如何检测它运行的 GNOME 版本并适本地分支代码? 最佳答案 const Config = imports.misc.config; if
我在 Gnome 中有一个窗口,我想删除其标题栏。这在 FVWM2 中很容易:我只是将窗口样式设置为包含 NoTitle .在 Gnome 中似乎没有类似的选项。 我最近学会了使用 wmctrl修改符
我如何开始为 GNOME 做贡献?我会用 C++ 和 Python 编程,但从未接触过 C。我什至不熟悉 GTK。 老实说,我不知道 GNOME 是如何工作的。我所拥有的只是以某种方式为它做出贡献的强
有没有办法禁用 Gnome 经典桌面热角(左上角)?我不小心激活它的频率比我故意激活的频率要高得多,这很烦人。我有一个 Fn+whatever 键可以做同样的事情,所以我真的不需要热角。 最佳答案 您
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
我想编写一个扩展,其功能与GNOME Shell中"focus-follows mouse"设置相反:我想使指针移动到当前聚焦窗口的中心。 可以在GNOME Shell扩展中完成吗?我看到了一些包装x
如何添加事件或其他方法来监听 gnome shell 扩展上的按键?例如每次按键都显示一个对话框,显示按下的键? 我找不到任何例子。 documentation提到了 keyboard模块,但是使用该
我尝试过: gsettings set org.gnome.desktop.background primary-color '#000000' gsettings set org.gnome.des
我已经使用 gedit 作为编程文本编辑器有一段时间了... 我想将最近打开的文件数量从 5 个增加到 10 个... 我检查了 gedit 首选项和 gconf-editor gedit 选项,但没
我试图让 guile-gnome 与安装在我机器上的 Guile 一起工作。我已经根据 the instructions here 下载并构建了 guile-gnome ,但无论我给它什么前缀,我似乎
我电脑的面板分辨率为 3840 x 2160 像素。如果我打开一个 gnome-boxes session ,虚拟机代码占用的空间比邮票大一点。 GNOME-Boxes 报告我看到了 1920 x 1
我曾经用 No Topleft Hot Corner 禁用 gnome-shell 的热角功能。扩大。升级到 gnome-shell 40 已弃用。 Gnome-tweaks声称它也可以禁用它,但是激
有没有办法从命令行启动 gnome-terminal(即,使用/usr/bin/gnome-terminal 命令)并让新终端继承运行命令的终端的环境变量和其他设置变量?场景是这样的: 打开终端 设置
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
我正在尝试编写我的第一个 Shell 扩展,并且 - 正如那里的每篇博客文章一样 - 我因缺乏最新文档而苦苦挣扎...... 也就是说,我正在尝试从键盘上获取所有击键,并且 - 查看在线代码和旧邮件列
如何更改背景颜色?我选择了 Profile > Background > solid color ,但我在哪里可以选择颜色? 最佳答案 有两种受支持的方法可以更改 xterm 的背景颜色(请记住 xt
我写了一个小的 GNOME Shell 扩展,我想分发给一些同事。 为此,我创建了一个 RPM。安装后需要重新启动 GNOME-Shell 才能使扩展可见,因此可以启用它。通过使用 其次是 r使用 X
我目前正在尝试重构现有的 gnome-shell 扩展的代码库。部分原因是引入单元测试,因为在 2016 年不使用测试似乎相当疏忽。 经过一番修补后,我设法设置了一个有效的 node-phantomj
Gnome Shell 有很好的快捷方式,但是,我找不到以编程方式调用它们的方法 假设我想使用 GJS 脚本启动 Google Chrome,将其移动到工作区 1,并将其最大化,然后启动 Emacs,
我是一名优秀的程序员,十分优秀!