На python я создаю Gtk.Window
и добавляю Gtk.Grid
. Но позже в коде я хочу обновить уже определенную сетку новой сеткой с новым содержимым.
Итак, наивно я пытаюсь получить первый Grid
объект и присвоить ему новое значение , но это не работает.
Итак, вот мой минимальный пример кода:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# MWE for refreshing Gtk.Grid
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
class GridWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Reassigning Grid MWE")
self.connect("destroy", Gtk.main_quit)
# Declaring the first Grid
grid1=Gtk.Grid()
label1=Gtk.Label("foo")
grid1.add(label1)
# Declaring the second Grid
grid2=Gtk.Grid()
label2=Gtk.Label("bar")
grid2.add(label2)
# Adding the first Grid to the Window
self.add(grid1)
# Trying to replacing the first Grid by the second
##############################
self.get_children()[0]=grid2 # <- The problem is here
##############################
screen = Gdk.Screen.get_default()
win = GridWindow()
win.show_all()
Gtk.main()
Когда я делаю self.get_children()[0]=grid2
, первый Grid
обычно должен быть заменен вторым один. Но окно, которое я получаю, все еще показывает, что "foo" witch - это рендеринг первого Grid
.
Так как подобрать объект, который содержит Gtk.Grid
и заменить его содержимым grid2