我现在意识到它仅在某些环境下发生。
可能是窗口管理器设置问题
下面的drawarea-events.py示例具有以下行为。
鼠标进入DrawingArea窗口时,我们将获得1个绘制信号。
鼠标离开DrawingArea窗口时,我们将获得13个绘制信号。
为什么?干什么的?
#!/usr/bin/env python3
import sys
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
import cairo
def quit(*args):
sys.stderr.write('quit args=%s\n' % str(args))
Gtk.main_quit()
sys.exit(0)
draw_count = 0
def draw(da, cairo_ctx, *args):
global draw_count
sys.stderr.write('draw count=%d args=%s\n' % (draw_count, str(args)))
draw_count += 1
win = Gtk.Window(title="DrawingArea Events")
win.connect("destroy", quit, "via window destroy")
win.set_default_size(240, 160)
da = Gtk.DrawingArea()
da.connect('draw', draw, "dummy arg")
win.add(da)
win.show_all()
Gtk.main()