python - 如何更新先前添加到 Gtk.Window 的 Gtk.Grid?
问题描述
在 python 上,我创建 aGtk.Window
并将其添加为Gtk.Grid
. 但是,在代码的后面,我想用一个新的 Grid 来更新这个已经定义的 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”女巫是第一个的渲染Grid
。
那么如何获取包含 的对象Gtk.Grid
并将其替换为 的内容grid2
?
解决方案
我不确定你想要达到什么目的......但这会奏效
##############################
self.remove(grid1)
self.add(grid2)
##############################
推荐阅读
- xslt - 在 XSLT 转换中合并元素
- apache-spark - Coalesce 可以增加 Spark DataFrame 的分区吗
- android - ListView.setAdapter Null 指针异常而 adapter.getCount 显示所有记录并且 Listview 也不是 Null
- java - 如何将布尔值序列化和反序列化为java枚举
- python - 不理解 webbrowser 模块中的 get()
- hibernate - Criteria.DISTINCT_ROOT_ENTITY 在 Hibernate 5 CriteriaQuery 中等效?
- windows - 在 Windows 机器中为 InfluxDB 配置“https”协议
- tensorflow - Tenseflow 和 Keras 对同一个 CNN 源有不同的结果
- r - R epiDisplay 软件包和其他流行病学软件包不适用于调查加权 glm?
- python - 将多个文件连接成一个文件,但跳过重新附加已经存在的内容