tkinter - 显示帧后运行功能

时间:2016-03-29 19:28:37

标签: python user-interface python-3.x tkinter tk

下面的代码在OtherPage类中有一个onShowFrame函数,该函数在显示OtherPage框架时运行。我的问题是onShowFrame函数中的所有内容都在帧实际显示给用户之前运行。我用spring-boot-starer-parent证明了这一点。在显示OtherPage帧之前,程序会在BlankPage上休眠5秒钟。我希望首先显示OtherPage帧,然后运行onShowFrame函数中的任何内容。

我该怎么做?

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

1 个答案:

答案 0 :(得分:1)

问题与您调用sleep 导致应用程序处于休眠状态的事实有关。为了使显示更新,事件循环必须能够处理在睡眠时不能执行的事件。按字面意思睡觉意味着停止所有处理。 time.sleep文档的前六个字是暂停执行当前线程

这是一个在小部件上调用update是合理的事情。它将为tkinter提供处理所有待处理事件的机会 - 例如处理按钮点击完成,重新绘制窗口等 - 生成新事件之前。

将功能更改为以下内容非常简单:

def showFrame(self,cont):
    frame = self.frames[cont]
    frame.tkraise()
    frame.update()
    frame.event_generate("<<ShowFrame>>")