微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代码在调用它 wxpython 的代码之后转到事件处理程序

如何解决代码在调用它 wxpython 的代码之后转到事件处理程序

我用paint方法绑定了paint事件。 当我刷新面板(应该调用事件处理程序)时,它会等待刷新完成后的代码,然后才调用它。有人为什么以及如何解决这个问题? 输出

def paint(self,event):
    print("here first")
    try:
       
        dc = wx.BufferedPaintDC(self)
        dc.DrawBitmap(self.bmp,0)
        print("time here2",time.time())
    except:
        pass


def NextFrame(self):
    self.Refresh()
    time.sleep(5)
    print("hey")

输出: 嘿
先到这里
时间在这里2 1615033876.9332623

如您所见,它首先打印 hey(这应该发生在“here first”和“time here2 .....”之后)

解决方法

self.Refresh() 在下一次事件循环迭代期间更新,正如萨克森州的罗尔夫所说。 Self Update() 仅在有要重新绘制的内容时立即重新绘制面板。 因此,解决方案是首先刷新()面板,然后一行更新()。 确保将绘制 event 绑定到正确的事件处理程序。

代码如下:

    def bind_paint(self):
        self.Bind(wx.EVT_PAINT,self.paint)


    def call_paint(self):
        self.Refresh() #will turn on the paint event
        self.Update() #will go to event handler now

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。