Я создал два разных класса, один отображает поток моей веб-камеры в 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()