当前位置:  开发笔记 > 编程语言 > 正文

Wx在PyQt中的空闲和UI更新事件

如何解决《Wx在PyQt中的空闲和UI更新事件》经验,为你挑选了1个好方法。

wx(和wxPython)在PyQt中有两个我错过的事件:

EVT_IDLE那被发送到一个框架.它可用于根据应用程序的状态更新各种小部件

EVT_UPDATE_UI 当它必须重新绘制和更新时,它被发送到一个小部件,所以我可以在处理程序中计算它的状态

现在,PyQt似乎没有这些,PyQt书建议编写一个updateUi方法并手动调用它.我甚至最终每0.1秒从计时器调用一次,以避免许多手动调用来自可能更新GUI的方法.我错过了什么吗?有没有更好的方法来实现这一目标?


一个例子:我有一个简单的应用程序,带有一个启动按钮,启动一些处理.只有在使用菜单打开文件时才应启用开始按钮.此外,状态栏上还有一个显示信息的永久小部件.

我的申请表明:

    在打开文件之前(在此状态下,状态栏显示特殊内容并禁用启动按钮)

    文件已打开且未开始处理:启动按钮已启用,状态栏显示其他内容

    处理正在运行:开始按钮现在显示"停止",状态栏报告进度

在Wx中,我将按钮的更新UI事件处理其状态:其上的文本以及是否已启用,具体取决于应用程序状态.状态栏也是如此(或者我使用EVT_IDLE).

在Qt中,我必须在几个可能影响状态的方法中更新按钮,或者只是创建一个update_ui方法并在计时器中定期调用它.什么是更"QT"的方式?



1> 小智..:

在wxWidgets中使用EVT_UPDATE_UI似乎突出了wxWidgets和Qt期望开发人员处理代码中事件的方式之一的根本区别.

使用Qt,您可以在用户界面中的小部件之间连接信号和插槽,既可以处理每个插槽中的"业务逻辑",也可以将其委托给专用方法.您通常不必担心对GUI中的每个窗口小部件进行单独更改,因为任何重新绘制请求都将放置在事件队列中,并在控件返回到事件循环时传递.为了提高效率,甚至可以将一些油漆事件合并在一起.

因此,在使用信号和槽来处理状态变化的普通Qt应用程序中,基本上不需要具有监视应用程序状态和更新窗口小部件的空闲机制,因为这些更新应该自动发生.

您将不得不多说一些关于您正在做什么来解释为什么在Qt中需要等同于此事件的原因.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有