管理Tk小部件?

时间:2011-12-19 18:56:26

标签: ruby perl tk

我非常喜欢tk,但我遇到的一个问题是如何干净地管理所有小部件。如果我创建20个小部件,我有20个变量,或者通常我创建一个哈希,我将它们全部存储起来。最近,我创建了一个具有父/子关系的类,我可以在其中创建父对象,如框架,并将子窗口小部件添加到它,看起来基本上是这样的:

parent = TkObject.new(TkRoot.new)
parent.add("MAIN_FRAME", TkFrame.new.pack)
parent.child("MAIN_FRAME").add("SUBMIT", TkButton.new(:text => "Submit").pack)

我发现这样可以保持组织有序,但最终我会找到很长的字符串来访问小部件。我试图找出是否有更好的方法来做到这一点,如果我想用上面提到的课程重新发明轮子。

1 个答案:

答案 0 :(得分:0)

Tk的小部件的内部名称非常类似于它,但是一个非常可行的解决方案是保持“有趣”小部件的句柄(通常在哈希中)。然后你只需将该哈希的句柄用作程序中的对象,这样就可以直接引用有趣的部分(因此,使用Perl语法):

$thing->{submit}->invoke();

当然,如果你正在访问一个很像这样的对象,特别是从对象的实现之外,你可能应该创建一个方法来管理它。它增加了一点性能成本,但保持了更清洁的东西(得墨忒耳法和所有这些)。

处理这一切的全部诀窍是把所有的复杂性都当作在海洋中游泳;只要你只是在水面上游泳,水的深度并不重要。 (如果你真的需要大量的嵌套,你可能做错了;当 非常嵌套时,GUI 主要工作得更好。)