【问题标题】:Gdk: how to remove bit from event mask in Python?Gdk:如何从 Python 中的事件掩码中删除位?
【发布时间】:2013-01-30 14:49:27
【问题描述】:

我想从我的窗口事件中删除POINTER_MOTION_MASK。我试过了:

win.set_events(win.get_events() & ~Gdk.EventMask.POINTER_MOTION_MASK)

但是,我得到了这个错误:

TypeError: Expected a Gdk.EventMask, but got int

我应该如何从事件掩码中删除该位?

【问题讨论】:

  • 我用 from gi.repository import Gdk 试过了,没有问题。
  • 好吧,我更正了这个问题。关键是GdkWindow.set_events() 需要Gdk.EventMask

标签: python gtk bitwise-operators gdk


【解决方案1】:

~ 操作符改变结果类型:

>>> type(Gdk.EventMask.POINTER_MOTION_MASK)
<class 'gi.repository.Gdk.GdkEventMask'>
>>> type(~Gdk.EventMask.POINTER_MOTION_MASK)
<type 'int'>

所以你需要转换结果。我想这应该可行:

win.set_events(win.get_events() & (Gdk.EventMask)~Gdk.EventMask.POINTER_MOTION_MASK))

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2022-01-01
    • 2013-07-02
    相关资源
    最近更新 更多