Gdk:如何在Python中从事件掩码中移除位?

4 投票
1 回答
721 浏览
提问于 2025-04-17 14:12

我想从我窗口的事件中去掉 POINTER_MOTION_MASK 这个东西。我试过这样做:

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

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

TypeError: Expected a Gdk.EventMask, but got int

我该怎么才能把这个位从事件掩码中去掉呢?

1 个回答

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))

撰写回答