Gtk.DrawingArea - зачем «рисовать» сигналы для ухода мыши - PullRequest
0 голосов
/ 16 января 2019

Теперь я понимаю, что это происходит только в некоторых условиях.
Может быть проблема с настройкой оконного менеджера

Приведенный ниже пример 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()
...