首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5用户界面停留在长时间操作中

PyQt5用户界面停留在长时间操作中
EN

Stack Overflow用户
提问于 2018-04-23 13:34:22
回答 1查看 469关注 0票数 1

我正在创建一个游戏与一些人工智能,可能需要一些时间。问题是,即使我在运行AI函数之前调用相关方法来更新UI,UI也不会在视觉上得到更新。

一些示例代码如下所示

代码语言:javascript
复制
    def onClickBoard(self, e):
        x, y = toBoardGrid(e.x(), e.y())
        self.game.move(x, y)
        self.update_board()

        print("before AI")
        # This line takes a few seconds
        ai_move = self.ai.get_best_move(self.game)
        print("after AI")
        self.game.move(ai_move[0], ai_move[1])
        self.update_board()

其中,self.update_board是一种更新QWidget的方法,它非常快速。这个onClickBoard方法被分配给小部件的mouseReleaseEvent

代码语言:javascript
复制
    self.board.mouseReleaseEvent = self.onClickBoard

在运行游戏时,我可以看到before AI打印到终端,但是视觉窗口没有改变。我只看到窗口更新一次,在AI提交其动作之后。

是否有办法在缓慢的函数调用之前使董事会更新一次,然后再更新一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 17:40:48

是的,您可以强制Qt处理所有挂起的事件,从而使用QApplication::processEvents()方法更新GUI。在慢速函数调用之前添加以下行:

代码语言:javascript
复制
QtWidgets.QApplication.instance().processEvents()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49982509

复制
相关文章

相似问题

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