GTK+ 3 和 Glade:在运行时将小部件添加到侧边栏 (C#)

GTK+ 3 and Glade: Add widgets to sidebar at runtime (C#)

我一直在使用 GTK 和 Glade 开发跨平台程序,因为我习惯于只为 windows 应用程序创建。这个问题涉及小部件(我相信这就是它们的名称)以及它们如何 'added' 到主要 window。最好用图片解释。

我有一个 mainwindow 是这样的:

您可以看到右侧是有意留空的。这是因为它将包含动态内容,例如玩家信息、小地图、库存等。这是我希望包含在右侧的小部件之一:

它大多只有基本信息,将被添加。忽略整个主要 window 并只关注正确的部分,在编码中我希望它显示如下内容:

问题是,我不完全明白你是否真的可以这样做,或者我实际上应该将右侧栏直接编码到客户端中。或者从头开始动态编码 *I.E.在运行时创建 labels/etc 而不是此 PlayerInfo window.

我很好奇什么功能可以做到这一点,以及是否有人可以指出正确的方向来理解这一点。我可能对这应该如何工作完全错误。

我假设您需要在创建时使用 C# 编码添加小部件。

如果我对你的问题理解正确,你可以考虑直接在 glade 中创建你的界面中的标签,有它 "blank" 或没有开始的数字(build/connect 它在与所有其他小部件一样创建,因此可以肯定它会在您的 window 中),然后使用指令

动态更新文本(整个文本或仅 caratheristics 的值)

set_label(参见 here) 例如我写在 python (self. 是处理程序)

self.my_label_widget.set_label("STR: 26")

我在 Python 工作,我不能给你一个 C 代码,但我认为基本思想是一样的。

我刚刚意识到

Widget newWidget = new Widget(builder.GetObject("PlayerInfo").Handle); 
Box test = builder.GetObject("boxDropDown");
test.Add(newWidget);

大体上是正确的,但在 glade 中我没有将它定义为 window,我实际上可以有一个单独的小部件,如框、网格等,并让它显示。所以这段代码确实有效。