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

时间:2016-09-13 14:12:39

标签: c# gtk gtk3 glade

我一直在使用GTK和Glade开发一个跨平台程序,因为我已经习惯了只为Windows应用程序创建。这个问题涉及小部件(我相信这就是他们所谓的)以及如何将它们“添加”到主窗口中。用图像也可以更好地解释。

我有一个主窗口,就像这样:

Main Window

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

Player Info

它主要只包含将要添加的基本信息。忽略整个主窗口,只关注正确的部分,在编码中我希望它显示如下:

Final Right Side Bar

问题是,我不完全理解这是否实际上是如何做到的,或者我实际上应该将右侧栏直接编码到客户端中。或者从头开始动态编码* I.E。在运行时克服标签/ etc而不是此PlayerInfo窗口。

我很想知道哪些功能可以做到这一点,如果有人可以指出我正确的方向来理解这一点。我应该如何工作可能完全错了。

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

2 个答案:

答案 0 :(得分:1)

如果我没有正确地解决你的问题,你可以考虑在林间空地直接建立你的界面时停止标签,让它"空白"或者在开始时使用数字(在创建时将其创建/连接为所有其他小部件,以确保它将在您的窗口内)然后以动态方式更新文本(整个文本或仅限于caratheristics的值)与指示

set_label(见here) 例如我在python中编写(self。是处理程序)

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

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

答案 1 :(得分:1)

我刚才意识到了

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

一般来说是正确的,但是在林间空间我没有将它定义为一个窗口,我实际上可以有一个单独的小部件作为一个盒子,网格等等并让它显示出来。所以这段代码确实有效。