加速大量数据呈现的正确方法?

2024-09-30 20:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

史上第一个关于stackoverflow的问题。我已经阅读了一段时间,同时尝试学习Python和wxPython。你知道吗

我正在编写一个小应用程序,用于以自定义方式在屏幕上显示大量数据。数据是存储在Python对象中的股票信息。大约100只股票应该同时出现在屏幕上。每个stockobject有35个属性,因此它可以同时显示3500个属性。我想要不同的字体,大小和颜色取决于属性。根据用户(me)的输入,每个stockobject的背景都在变化。你知道吗

所以我试着用wxPython和很多StaticText控件做一个接口。加载耗时5秒,使用timeit模块计时。你知道吗

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

我的问题很简单:你认为我选择了正确的方法吗? 或者有没有一种更简单、更python的方法来做到这一点,而不使用花了很长时间加载的StaticText?你知道吗

网格对我来说不是一个解决方案,因为我希望数据以非常特定的布局呈现。为了能够用网格做到这一点,我必须将网格设置为2px和hight,然后合并所有的单元格。。。你知道吗

编辑:

下载控件图片的链接,如昨天所示: http://dl.dropbox.com/u/10606669/super.png

又丑又不是我想要的那样。这是因为我试图编写自己的sizer例程。你知道吗


Tags: 数据内存用户应用程序网格属性屏幕颜色
1条回答
网友
1楼 · 发布于 2024-09-30 20:30:24

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

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

不过,一般来说,拥有这么多窗口控件会影响性能,因此自定义绘图是唯一的解决方案。您可以通过为一个股票创建自己的自定义控件(使用自己的EVT\u PAINT处理程序等),然后创建100个这样的股票来简化一些事情。它应该使你的直流电计算更容易。有关详细信息,请参见Creating Custom Controls。你知道吗

相关问题 更多 >