在 Glade 中动态添加对象/子项

问题描述

我想动态地将一个孩子(如代码中所说的)添加一个盒子对象(在 Glade 中创建),但是孩子(在我的测试案例中是一个 label,最后这应该是一个 { {1}}) 不知何故没有出现在窗口中。

我的代码

comboBox
#!/usr/bin/env python3

import gi
gi.require_version("Gtk","3.0")
from gi.repository import Gtk

class TestClass:
    def on_window_destroy(self,object,data=None):
        print("quit with cancel")
        Gtk.main_quit()

    def on_quit_activate(self,menuitem,data=None):
        print("quit from menu")
        Gtk.main_quit()

    def addLabel(self):
        ret = Gtk.Label(label="Testing")
        ret.set_text("Testing text")
        return ret

    def __init__(self):
        self.gladefile = "./testing.glade"
        self.builder = Gtk.Builder()
        self.builder.add_from_file(self.gladefile)
        self.builder.connect_signals(self)

        #self.grid = Gtk.Grid()
        Box = self.builder.get_object("Box")
        Box.add(self.addLabel())

        #self.grid.add(self.addLabel())

        self.window = self.builder.get_object("window")
        self.window.show()

if __name__ == '__main__':
    main = TestClass()
    Gtk.main()
    quit()

最后,用户应该有一个项目列表,其中可以填充某些字段(主要是 <!-- Generated with glade 3.38.2 --> <interface> <requires lib="gtk+" version="3.24"/> <object class="GtkWindow" id="window"> <property name="can-focus">False</property> <signal name="destroy" handler="on_window_destroy" swapped="no"/> <child> <object class="GtkBox" id="Box"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> </object> </child> </object> </interface> es),并且存在一个按钮以添加更多列表项目。

如果有人认为这样做比在运行时手动添加字段更好,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)