首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GtkClutter - Clutter.Stage没有接收指针事件

GtkClutter - Clutter.Stage没有接收指针事件
EN

Stack Overflow用户
提问于 2014-10-20 05:57:52
回答 1查看 269关注 0票数 0

我正在使用优秀的PyGI AIO (3.14.0)二进制文件在Windows上使用Gtk3和Clutter进行开发。到目前为止,它一直发挥着巨大的作用。但是,指针事件没有到达Clutter.Stage小部件内的GtkClutter.Embed似乎存在问题。以下是代码:

代码语言:javascript
复制
import sys

from gi.repository import GtkClutter
GtkClutter.init(sys.argv)
from gi.repository import Clutter, Gdk, Gtk, GObject

def main():
    win = Gtk.Window(Gtk.WindowType.TOPLEVEL)

    # Works
    #win.connect('button-press-event', lambda *args: sys.stdout.write("BP\n"))
    #win.connect('button-release-event', lambda *args: sys.stdout.write("BR\n"))
    #win.connect('motion-notify-event', lambda *args: sys.stdout.write("ME\n"))

    embed = GtkClutter.Embed()
    embed.set_size_request(800, 600)

    # Works
    #embed.connect('button-press-event', lambda *args: sys.stdout.write("BP\n"))
    #embed.connect('button-release-event', lambda *args: sys.stdout.write("BR\n"))
    #embed.connect('motion-notify-event', lambda *args: sys.stdout.write("ME\n"))

    stage = embed.get_stage()
    stage.set_reactive(True)
    stage.set_size(800, 600)
    stage.set_color(Clutter.Color.new(0, 128, 0, 255))

    # Fails
    stage.connect('button-press-event', lambda *args: sys.stdout.write("BP\n"))
    stage.connect('button-release-event', lambda *args: sys.stdout.write("BR\n"))
    stage.connect('motion-event', lambda *args: sys.stdout.write("ME\n"))

    # Works (surprisingly...)
    stage.connect('key-press-event', lambda *args: sys.stdout.write("KP\n"))
    stage.connect('key-release-event', lambda *args: sys.stdout.write("KR\n"))

    stage.show_all()

    win.add(embed)

    win.connect("delete-event", Gtk.main_quit)
    win.show_all()

    Gtk.main()

    return 0

if __name__ == '__main__':
    sys.exit(main())

以上代码正确吗?我想知道这是否是Windows特有的问题。有人能在另一个操作系统上重现这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 22:40:35

我很久以前就收到过这样的报告,是一位地图应用开发人员写的。我建议他转到gdk后端。

代码语言:javascript
复制
from gi.repository import Clutter
Clutter.set_windowing_backend(Clutter.WINDOWING_GDK)

注:以上应在其他杂乱事件发生前进行。

它现在应该捕捉事件,但是没有这种解决办法,所有的C示例都能正常工作,所以我不知道为什么它不能在绑定级别工作。我认为您的代码也已经包含了gtk-杂乱-test.c。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26459303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档