У меня возникли проблемы с созданием области рисования GTK3 с пользовательским кодом cairo. Кажется, что каирский контекст не хочет беспокоить форму, которую я указываю. Он записывает весь источник на весь пункт назначения независимо от формы.Невозможно нарисовать пути с помощью cairo на виджетах gtk в python 3
Так, например, если я установил полностью белую область источника, чтобы нарисовать маленький белый прямоугольник, и я спрошу у cairo fill()
, что прямоугольник, он рисует весь виджет DrawingArea вместо этого прямоугольника. Что мне здесь не хватает?
#!/usr/bin/env python3
from gi.repository import Gtk as gtk
from gi.repository import Gdk as gdk
import cairo
class Canvas(gtk.DrawingArea):
def __init__(self):
gtk.DrawingArea.__init__(self)
self.set_size_request(600,400)
self.connect('draw',Canvas.on_draw)
def on_draw(self,context):
context.set_source_rgb(0.1, 0.0, 0.1)
context.fill()
context.set_source_rgb(1.0, 1.0, 1.0)
context.rectangle(50,50,100,100)
context.fill()
context.paint()
return False
#look at this code
class MainWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self, title="Game Centurion")
self.dummy0 = gtk.Label(label="dummy₀")
self.canvas = Canvas()
self.box = gtk.Box()
self.box.pack_start(self.canvas, True, True, 0)
self.box.pack_start(self.dummy0, True, True, 0)
self.add(self.box)
self.connect('delete-event', gtk.main_quit)
if __name__ == '__main__':
w = MainWindow()
w.show_all()
gtk.main()
Вот окно результата, вы можете увидеть его полностью белый вместо того, чтобы иметь небольшой белый квадрат на темном фиолетовом фоне, как я указал в коде выше.
Спасибо за любую помощь.
вы можете опубликовать полную версию рабочего примера? – Oz123