我正在使用GTK3和Glade设计一个python程序。它需要根据用户需要构建的内容来更改界面。
第一个界面如下:
____________________________________________________
| Label one | Text entry one | Save object button |
| Label two | Text entry two | |
____________________________________________________
位于Gtk.Box()内的顶级窗口中,设置为垂直,Gtk.Grid()作为框一侧的标签和文本条目,以及保存对象按钮的部分框。 (我的界面实际上要复杂得多,因为表格中有更多标签,文本条目,切换按钮,组合框等)。如果您想看到它,它位于http://sourceforge.net/projects/createlauncher。
如果用户需要构建另一个对象,它将如下所示:
________________________________________________________
| Label three | Text entry three | Save object button |
| Label four | Text entry four | |
________________________________________________________
有关如何实施变更的一些建议?
我已经想过要跟踪标签一到二和进入二 - 二,隐藏它们并展示其他标签,但它与格式化有关。我已经搞砸了删除每个小部件并重建,如果需要切换回来。这是很多工作。由于我正在使用Glade,因此我很难创建一个单独的“区域”,因为我考虑删除Gtk.Box()并将其重新设置为其他界面需要,但使用Glade似乎令人望而却步。
我愿意接受任何和所有选择。
答案 0 :(得分:1)
复合自定义小部件?
class ObjectOneSettings(Gtk.Grid):
def __init__(self):
Gtk.Grid.__init__(self)
self.label_one = Gtk.Label('Label One')
self.label_two = Gtk.Label('Label Two')
self.entry_one = Gtk.Entry()
self.entry_two = Gtk.Entry()
self.attach(self.label_one, 0, 0, 1, 1)
self.attach(self.label_two, 0, 1, 1, 1)
self.attach(self.entry_one, 1, 0, 1, 1)
self.attach(self.entry_two, 1, 1, 1, 1)
然后,您可以销毁ObjectOneSettings
窗口小部件,并在需要更改窗口时将其替换为ObjectTwoSettings
窗口小部件。
答案 1 :(得分:1)
也许有点像黑客,但你可以使用带有隐藏标签和边框的笔记本。
答案 2 :(得分:1)
如果你使用Glade,我可以想到两种方法。
第一个是根据你需要在python代码中动态更改Gtk.Label和Gtk.Entry的标签。
第二个是在Glade中创建一个单独的Gtk.Box,它不在主窗口内,并在需要时添加它(首先从窗口中删除另一个)。这看起来像这样: