如何解决Tkinter网格管理器的大小限制
| 我正在编写一个Python应用程序来解析二进制文件列表,汇总其中的数据统计信息并输出结果。我可以轻松地将这些结果输出为.tsv文件,但是为了方便我的同事而编写此程序,因此我试图使它在新窗口中显示结果,以防止有时不得不在Windows中打开文件。 Excel。现在,我基本上是将Tkinter框架嵌入滚动画布中,并将包含数据标签的较小框架网格化到该框架中。 (较小的框架似乎对于使所有边界与网格线对齐都是必要的;否则,将它们收缩包装以适合标签) 这种方法适用于一百列以上,甚至十行。但是,当我开始将行数增加到数百时,我开始遇到奇怪的问题。程序可能没有响应,新窗口可能不会显示,并且所有标签(而不是在网格中绘制)都放置在屏幕的左上角。由于这似乎是一个与比例尺有关的问题,我想知道我是否只是简单地淹没了带有成千上万个元素的网格管理器。因此,我有两个问题:1)我是否会遇到这种局限性,还是其他问题?2)是否有更好的方法在Tkinter中实现类似于Excel的表格显示,从而避免了这些问题?解决方法
我编写了一个测试程序以两种方式显示数据,一次使用框架和网格,一次在画布上直接绘制文本。
使用帧+网格技术,100行乘10列的性能是完全可以接受的。当我增加到200行时,性能下降了2倍以上,而到了300行时,性能就无法使用了。我的意思是,初始显示花了几十秒钟。但是,一旦出现窗口,性能就可以接受了。
直接在画布上绘制文本项,性能要好得多。我可以显示300行乘10列,并且初始显示几乎是瞬时的。当我有1000行和100列时,性能仍然可以接受,可能需要2-3秒才能启动。
因此,对于大量单元格,最好直接在画布上绘制它们。这意味着您需要自己计算一行的高度,并对列进行一些数学运算-使用固定宽度的列或跟踪最宽的列,然后相应地调整坐标。
, 随着事情的发展,网格几何管理器会遇到问题。它不是为处理大量子窗口而设计的(即,任何您想扩展到无需滚动即可舒适地扩展的范围)。相反,您正在寻找TkTable。这样可以扩展到处理非常大的表格数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。