首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理长GUI构建时间(wxPython)的策略

管理长GUI构建时间(wxPython)的策略
EN

Stack Overflow用户
提问于 2014-02-20 21:05:48
回答 2查看 76关注 0票数 0

我有一个带有多阶段GUI的wxPython应用程序。首先,一个简单的表单弹出,用于从许多(> 100)选项中进行选择(这是一个带有搜索框的部件编号列表)。一旦用户进行了选择,它就会生成适当的表单并显示出来,隐藏初始选择对话框。由于这个项目的性质,每个次要表单在一个Notebook中都有几个matplotlib图形,每个都有7或8个图形,每个都有2-5个轴。因此,表单从初始化到在屏幕上显示都需要几秒钟的时间。

wxPython有在后台构建框架的方法吗?我不介意强迫用户等待一段时间才能显示出来,但由于现在正在构建表单,事件循环就会变得毫无响应。如果我使用一个线程来构建表单,它就会成功地完成,但是当我调用.Show()时,什么都不会发生,也没有错误消息。

可以想象,这样的GUI代码相当复杂,因此很难显示SSCCE (而且它不是开源的)。如果需要的话,我可以尝试破解一些类似我的问题的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-20 22:46:33

我以前使用过BusyInfo来告诉用户某些事情正在发生。在实际开始创建matplotlib图形之前,您应该将其放在框架的init()中。你可以在这里读到:

  • http://wiki.wxpython.org/BusyInfo

另一个想法是创建第二个框架,其中包含一个进度条和一个消息。进度条将被设置为来回弹跳,当您完成创建matplot的东西时,您将关闭第二个帧。

票数 2
EN

Stack Overflow用户

发布于 2014-02-21 01:01:59

当某些事情需要很长时间时,Mike使用wxBusyInfo的想法是有用的,但是您可能会让它花费更少的时间(至少也可以)。

首先,当将许多项插入到wxChoice中(尽管我不会说100是那么多,但一定是1000个)时,在添加它们之前先插入冰冻,然后再添加它们,然后再添加解冻。这将大大减少插入所需的时间。

其次,创建多页wxNotebook (或另一个wxBookCtrl)的所有控件可能很长,甚至在C++中也是如此。因此,我们的想法是不立即这样做,而只是创建您最初要向用户显示的页面的控件。然后,只在用户即将选择其他页面时(即在wxEVT_BOOKCTRL_PAGE_CHANGING事件处理程序中)创建其他页面控件。

如果你把这个放好了,你可能不再需要wxBusyInfo了.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21919583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档