Python 如何使Gtk.DrawingArea填充Gtk.Grid?

Python 如何使Gtk.DrawingArea填充Gtk.Grid?,python,gtk,pygobject,Python,Gtk,Pygobject,我试图在Gtk窗口中绘制一组圆。我可以在Gtk.DrawingArea中绘制一个,当DrawingArea是唯一的对象时,它会展开以适合窗口。然而,当我在Gtk.网格中放入多个时,它们无法扩展以填充网格 我如何让他们填写表格 我复习了其中提到的内容,但没有解决问题(或者我没有掌握概念) 我已尝试将属性expand、hexpand、vexpand、hexpand_set和vexpand_set设置为True,并将_halign和_valign设置为Gtk.Align.FILL,但均无效 我的圆圈是

我试图在Gtk窗口中绘制一组圆。我可以在Gtk.DrawingArea中绘制一个,当DrawingArea是唯一的对象时,它会展开以适合窗口。然而,当我在Gtk.网格中放入多个时,它们无法扩展以填充网格

我如何让他们填写表格

我复习了其中提到的内容,但没有解决问题(或者我没有掌握概念)

我已尝试将属性expand、hexpand、vexpand、hexpand_set和vexpand_set设置为True,并将_halign和_valign设置为Gtk.Align.FILL,但均无效

我的圆圈是通过CircleArea.py创建的

从gi.repository导入Gtk
进口开罗
输入数学
类电路A(Gtk.图纸区域):
“”“为圆建立空间并在其中绘制圆”“”
定义初始化(自):
super(CircleArea,self)。\uuuu init\uuuuu()
self.hexpand=True
self.vexpand=True
self.set_halign=Gtk.Align.FILL
self.set_valign=Gtk.Align.FILL
自连接(“绘制”,自绘制)
图纸上的def(自身、小部件、cr):
高度=小部件。获取分配的高度()
width=widget.get_allocated_width()
如果宽度小于高度,则较小=宽度,否则为高度
cr.set\U源\U rgb(自红、自绿、自蓝)
cr.arc(高度/2,宽度/2,更小*0.45,0,2*math.pi)
cr.fill()
窗口本身在Grid.py中

导入gi
gi.require_版本('Gtk','3.0')
从gi.repository导入Gtk
从CircleArea导入CircleArea
类CircleWindow(Gtk.窗口):
定义初始化(自):
Gtk.Window.\uuuu init\uuuuu(self,title=“圆形网格”)
自行设置边框宽度(10)
self.grid=Gtk.grid()
self.circle\u area1=CircleArea()
self.circle_area2=CircleArea()
自网格连接(自圆区域1,0,0,1,1)
自网格连接(自圆区域2、1、0、1、1)
self.add(self.grid)
win=CircleWindow()
win.connect(“破坏”,Gtk.main_退出)
赢,全力以赴
Gtk.main()

我希望这些圆填充可用的网格空间,但它们的大小都是1x1。

我的问题是set\u halign、set\u valign、set\u hexpand和set\u vexpand是方法而不是属性。因此,在Cirlea.init()中,我将代码更改为:

def __init__(self):
        super(CircleArea, self).__init__()
        self.set_hexpand(True)
        self.set_vexpand(True)
        self.set_halign(Gtk.Align.FILL)
        self.set_valign(Gtk.Align.FILL)
        self.connect('draw', self.on_draw)