【问题标题】:Force update GUI in kivy在kivy中强制更新GUI
【发布时间】:2014-07-02 10:47:49
【问题描述】:

我正在用 kivy 编写一个应用程序,它在启动时会执行大量 cpu 计算。我希望应用程序显示当前正在执行的操作以及进度,但是,由于尚未到达主循环,因此它只会显示空白屏幕,直到完成工作。可以强制kivy更新界面吗?

基本上我正在寻找 kivy 的相当于 Tkinter 的 root.update()

我可以通过定义一系列函数来创建一个解决方法,每个函数通过Clock.schedule_once(nextFunction, 1) 调用下一个函数,但这会非常草率。

提前致谢。

【问题讨论】:

  • 你不应该在这里使用线程吗?

标签: python kivy


【解决方案1】:

撇开您是否应该使用线程或其他东西(可能应该)的问题不谈,答案就是您应该将 cpu 计算移到其他地方。最初显示一些简单的东西(即从您的构建方法返回一个简单的小部件),然后进行计算,例如通过时钟调度它们。

在这种情况下,您的计算仍会阻止 gui。您可以通过在线程中执行它们或手动将它们分解成可以按顺序安排的小块来解决此问题。

可能可以通过手动调用Clock.tick() 之类的方法来更新 gui,但我不确定这是否能正常工作,即使这样它也无法在初始化之前显示图形.

【讨论】:

  • 这取决于这些计算实际上是什么。线程几乎肯定是一个合理的解决方案,但计算可能很容易分解为可以在常规时钟事件中增量执行的东西。
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2012-04-02
相关资源
最近更新 更多