gpt4 book ai didi

python - wxPython - 如何强制 UI 刷新?

转载 作者:行者123 更新时间:2023-11-30 23:43:21 24 4
gpt4 key购买 nike

我已将问题归结为本文中显示的示例代码。请注意,我没有调用 app.MainLoop(),因为这不是一个交互式窗口;我希望它在开始时弹出,在工作发生时显示一些进度条,并在完成时消失。

我对 wxPython 和 wx.Yield() 的(有限)理解使我相信在一些 UI 工作之后调用 wx.Yield() 会将这些更改刷新到显示中。这并没有发生——当我运行这个脚本时,“Hello World”应该是一个灰色的框。

我做错了什么?

import wx

class MyFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, size=(400,400))
self.panel = wx.Panel(self, -1)
wx.StaticText(self.panel, -1, "Hello World", (20,20))
wx.Yield()


class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, -1)
self.frame.Show(True)
self.SetTopWindow(self.frame)
return True


def run():
app = MyApp(redirect=False)
import time; time.sleep(5)

run()

最佳答案

您需要定期生成或更新,以便当您的操作系统/窗口管理器向您的应用程序发送重绘消息时,它可以处理它们。我对 wxPython 不是 100% 确定,因为我最近没有使用过它,但我认为如果没有主循环来适本地处理消息,你就无法做你想做的事情。

但是,您可能会在这里找到一些关于主循环线程化的有用信息(以及主循环为何重要的解释):http://wiki.wxpython.org/MainLoopAsThread

关于python - wxPython - 如何强制 UI 刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com