Как мы интегрируем многопроцессорность в окно Gtk - PullRequest
0 голосов
/ 08 апреля 2020

Я создал два разных класса, один отображает поток моей веб-камеры в GtkImage (используя OpenCV с бесконечным l oop), а второй отображает анимацию, управляемую ключевой кнопкой в ​​Gtk.DrawingArea (используя Cairo и др.). oop). Я хочу отобразить эти 2 класса в одном и том же Gtk.Window, к сожалению, он сильно отстает, поэтому я хотел бы запустить два разных класса с многопроцессорной обработкой или многопоточностью, но я понятия не имею, как их использовать или как интегрировать их в учебный класс.

Там мой класс рисования Gtk:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk , GLib, Gdk
import cairo
import math
import time


  class Animator(Gtk.DrawingArea):
   def __init__(self, **properties):
       super().__init__(**properties)
       self.ims = cairo.ImageSurface.create_from_png("/home/m/PycharmProjects/untitled1/BueGrid560.png")
       self.set_size_request(200, 80)
       self.connect("draw", self.do_drawing)
       self.tc = 0
       self.x= 30
       self.y= 30


def do_drawing(self, widget, ctx):
     ctx.set_source_surface(self.ims, 10, 10)
     ctx.paint()
     self.draw(ctx, self.get_allocated_width(),  self.get_allocated_height())



def draw(self, ctx, width, height):

        self.tc += 0.2
        self.tc %= 2 * math.pi
        ctx.set_source_rgb(1,11/187,11/187)
        ctx.set_line_width(8)
        ctx.set_line_cap(cairo.LINE_CAP_ROUND)
        ctx.arc(self.x,self.y,7 + 2 * math.sin(self.tc + 10), -2 * math.pi, 0)
        #ctx.move_to(width / 2 + i * 10, height / 2 + 3 -8 * math.sin(self.tc + i))
        #ctx.line_to(width / 2 + i * 10, height / 2 - 3 +8 * math.sin(self.tc + i))
        ctx.fill()
        time.sleep(0.01)
        self.queue_draw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...