Skip to main content
 首页 » 编程设计

python之加快大量数据呈现的正确方法

2025年05月04日6Terrylee

关于 stackoverflow 的第一个问题。现在已经阅读了一段时间,同时尝试学习 Python 和 wxPython。

我正在编写一个小应用程序,以自定义方式在屏幕上显示大量数据。数据是存储在 Python 对象中的股票信息。它应该在屏幕上同时显示大约 100 只股票。每个stockobject有35个属性,所以它同时显示3 500个属性。我想要根据属性使用不同的字体、大小和颜色。每个库存对象的背景根据用户(我)的输入而变化。

所以我尝试用 wxPython 和很多 StaticText 控件制作一个界面。加载耗时 5 秒,用 timeit 模块计时。

通过谷歌搜索网络让我想到了在设备上下文中绘制数据。这只用了 0.1 秒。为了使应用程序可点击,我在内存中绘制了第二张图片,每个属性都有特定的颜色。单击显示图片的面板时,我将坐标与内存中的 DC 进行比较,以计算单击的内容。现在我要编写一个 sizer 例程,以便用户可以更改字体大小。

我的问题很简单:您认为我选择了正确的方法吗? 或者是否有更简单、更 pythonic 的方法来执行此操作,而无需使用永远加载的 StaticText?

网格不是我的解决方案,因为我希望数据以非常特定的布局呈现。为了能够用网格做到这一点,我必须将网格设置为 2px 和高度,然后合并整个地方的单元格......

编辑:

昨天的 Controller 图片下载链接: http://dl.dropbox.com/u/10606669/super.png

丑陋而且不是我想要的样子。这是因为尝试编写我自己的 sizer 例程。

请您参考如下方法:

您可以尝试在加载过程中卡住整个帧,如下所示:

frame.Freeze() 
try: 
    # load all data 
finally: 
    frame.Thaw() 

不过,一般来说,拥有那么多 Window 控件会影响性能,因此自定义绘图是唯一的解决方案。您可以通过为一只股票创建自己的自定义控件(使用其自己的 EVT_PAINT 处理程序等)然后创建其中的 100 个来稍微简化事情。它应该使您的 DC 计算更容易。参见 Creating Custom Controls获取更多信息。