我正在用python编写GUI,并使用tkinter。我在确定方法上遇到困难,需要指导。
背景:有一台服务器(不是Web服务器)想要向用户展示很多信息,并让他们对其进行一些编辑。它需要发送(相对)愚蠢的python客户端用来填充窗口的信息。只读字段是标签。这些字段通常是单行Entry小部件,但有些是多行Text。有一些按钮,复选框和下拉菜单。异步地,服务器还可以更新,添加和删除小部件。在某些情况下,会显示一些表,用户需要在这些表上添加和删除行。
真正的问题是,布局密集且混乱。第一行可能包含3个下拉字段。下一个可能是20个短标签。下一个可能是单个长的Entry字段,然后我可能想要两个并排(不同长度)的表,等等。基于外部因素的用户输入,窗口小部件,行或整个表可能必须动态添加或消失。
我考虑了Grid,但是它不可用。一行中只有一个长条目的widgit的行使第一列变宽,从而将下一行的13列中的12列从窗口中移出。
我考虑过Place,但是该应用程序将在3种不同的操作系统上运行,并且用户将能够选择自己的字体,因此我永远都无法正确定位。如果可以通过某种方式询问窗口小部件的大小,我会很乐意用它来计算自己的像素布局,但是在几何图形管理器将窗口小部件布局好之后,似乎不可能询问窗口小部件的大小,当然这为时已晚。
所以我想剩下的是Pack,其中每一行都是其自己的框架,其中一些行中包含表(网格)。但是我担心这意味着要渲染很多帧,并且某些用户使用的是旧的,缓慢的硬件。另外...看起来很简单。
我错过了更好的方法吗?如果我可以说服它停止尝试使列对齐,则网格会很好。如果我可以提前获取每个小部件的大小,则位置会很松脆,但是可以。放在很多帧中真的是我最好的吗?
答案 0 :(得分:0)
简短的回答,没有更好的办法了;帧数不足以导致性能问题;因此,每行生成一帧是可行的。