Как обновить Gtk.Grid, ранее добавленную в Gtk.Window? - PullRequest
0 голосов
/ 18 апреля 2020

На 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

1 Ответ

0 голосов
/ 19 апреля 2020

Я не уверен, чего вы пытаетесь достичь ... но это сработает

##############################
self.remove(grid1)
self.add(grid2)
##############################
...