• <bdo id='laFlN'></bdo><ul id='laFlN'></ul>

    <small id='laFlN'></small><noframes id='laFlN'>

    <legend id='laFlN'><style id='laFlN'><dir id='laFlN'><q id='laFlN'></q></dir></style></legend>
  • <tfoot id='laFlN'></tfoot>
    1. <i id='laFlN'><tr id='laFlN'><dt id='laFlN'><q id='laFlN'><span id='laFlN'><b id='laFlN'><form id='laFlN'><ins id='laFlN'></ins><ul id='laFlN'></ul><sub id='laFlN'></sub></form><legend id='laFlN'></legend><bdo id='laFlN'><pre id='laFlN'><center id='laFlN'></center></pre></bdo></b><th id='laFlN'></th></span></q></dt></tr></i><div id='laFlN'><tfoot id='laFlN'></tfoot><dl id='laFlN'><fieldset id='laFlN'></fieldset></dl></div>

        在 Kivy 中构建简单的进度条或加载动画?

        Building a simple progress bar or loading animation in Kivy?(在 Kivy 中构建简单的进度条或加载动画?)
          <bdo id='tVfMh'></bdo><ul id='tVfMh'></ul>
              <tbody id='tVfMh'></tbody>
              1. <tfoot id='tVfMh'></tfoot>

              2. <legend id='tVfMh'><style id='tVfMh'><dir id='tVfMh'><q id='tVfMh'></q></dir></style></legend>
                <i id='tVfMh'><tr id='tVfMh'><dt id='tVfMh'><q id='tVfMh'><span id='tVfMh'><b id='tVfMh'><form id='tVfMh'><ins id='tVfMh'></ins><ul id='tVfMh'></ul><sub id='tVfMh'></sub></form><legend id='tVfMh'></legend><bdo id='tVfMh'><pre id='tVfMh'><center id='tVfMh'></center></pre></bdo></b><th id='tVfMh'></th></span></q></dt></tr></i><div id='tVfMh'><tfoot id='tVfMh'></tfoot><dl id='tVfMh'><fieldset id='tVfMh'></fieldset></dl></div>

                  <small id='tVfMh'></small><noframes id='tVfMh'>

                  本文介绍了在 Kivy 中构建简单的进度条或加载动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在为我开发的命令行实用程序编写 Kivy UI.一切正常,但有些进程可能需要几秒钟到几分钟的时间来处理,我想向用户提供一些指示,表明该进程正在运行.理想情况下,这将是一个旋转轮或加载栏或其他东西的形式,但即使我可以更新我的显示以向用户显示一个进程正在运行,它也会比我现在拥有的更好.

                  I am writing a Kivy UI for cmd line utility I have developed. Everything works fine, but some of the processes can take from a few seconds to a few minutes to process and I would like to provide some indication to the user that the process is running. Ideally, this would be in the form of a spinning wheel or loading bar or something, but even if I could update my display to show the user that a process is running, it would be better than what I have now.

                  目前,用户在主 UI 中按下按钮.这会弹出一个弹出窗口,向用户验证一些关键信息,如果他们对这些选项感到满意,他们会按下运行"按钮.我已经尝试打开一个新的弹出窗口来告诉他们进程正在运行,但是因为在进程完成之前显示不会更新,所以这不起作用.

                  Currently, the user presses a button in the main UI. This brings up a popup that verifies some key information with the user, and if they are happy with those options, they press a 'run' button. I have tried opening a new popup to tell them that the process is running, but because the display doesn't update until the process finishes, this doesn't work.

                  我有很多编码经验,但主要是在数学和工程方面,所以我对 UI 设计和处理事件和线程非常陌生.一个简单的独立示例将不胜感激.

                  I have a lot of coding experience, but mostly in the context of math and engineering, so I am very new to the designing of UIs and having to handle events and threads. A simple self-contained example would be greatly appreciated.

                  推荐答案

                  我最近正在解决你描述的问题:显示在进程完成之前不会更新

                  I was recently tackling the problem you described: display doesn't update until the process finishes

                  这是我在#Kivy IRC 频道中@andy_s 的帮助下完成的一个完整示例:

                  Here is a complete example that I got working with the help of @andy_s in the #Kivy IRC channel:

                  我的 main.py:

                  My main.py:

                  from kivy.app import App
                  from kivy.uix.popup import Popup
                  from kivy.factory import Factory
                  from kivy.properties import ObjectProperty
                  from kivy.clock import Clock
                  
                  import time, threading
                  
                  class PopupBox(Popup):
                      pop_up_text = ObjectProperty()
                      def update_pop_up_text(self, p_message):
                          self.pop_up_text.text = p_message
                  
                  class ExampleApp(App):
                      def show_popup(self):
                          self.pop_up = Factory.PopupBox()
                          self.pop_up.update_pop_up_text('Running some task...')
                          self.pop_up.open()
                  
                      def process_button_click(self):
                          # Open the pop up
                          self.show_popup()
                  
                          # Call some method that may take a while to run.
                          # I'm using a thread to simulate this
                          mythread = threading.Thread(target=self.something_that_takes_5_seconds_to_run)
                          mythread.start()
                  
                      def something_that_takes_5_seconds_to_run(self):
                          thistime = time.time() 
                          while thistime + 5 > time.time(): # 5 seconds
                              time.sleep(1)
                  
                          # Once the long running task is done, close the pop up.
                          self.pop_up.dismiss()
                  
                  if __name__ == "__main__":
                      ExampleApp().run()
                  

                  我的例子.kv:

                  AnchorLayout:
                      anchor_x: 'center'
                      anchor_y: 'center'
                      Button:
                          height: 40
                          width: 100
                          size_hint: (None, None)
                          text: 'Click Me'
                          on_press: app.process_button_click()
                  
                  <PopupBox>:
                      pop_up_text: _pop_up_text
                      size_hint: .5, .5
                      auto_dismiss: True
                      title: 'Status'   
                  
                      BoxLayout:
                          orientation: "vertical"
                          Label:
                              id: _pop_up_text
                              text: ''
                  

                  如果你运行这个例子,你可以点击Click Me按钮,它应该会打开一个模态/弹窗形式的进度条".此弹出窗口将保持打开 5 秒钟而不会阻塞主窗口.5秒后,弹窗会自动消失.

                  If you run this example, you can click the Click Me button, which should open up a "progress bar" in the form of a modal/pop-up. This pop up will remain open for 5 seconds without blocking the main window. After 5 seconds, the pop up will automatically be dismissed.

                  这篇关于在 Kivy 中构建简单的进度条或加载动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  【网站声明】本站部分内容来源于互联网,旨在帮助大家更快的解决问题,如果有图片或者内容侵犯了您的权益,请联系我们删除处理,感谢您的支持!

                  相关文档推荐

                  How to make a discord bot that gives roles in Python?(如何制作一个在 Python 中提供角色的不和谐机器人?)
                  Discord bot isn#39;t responding to commands(Discord 机器人没有响应命令)
                  Can you Get the quot;About mequot; feature on Discord bot#39;s? (Discord.py)(你能得到“关于我吗?Discord 机器人的功能?(不和谐.py))
                  message.channel.id Discord PY(message.channel.id Discord PY)
                  How do I host my discord.py bot on heroku?(如何在 heroku 上托管我的 discord.py 机器人?)
                  discord.py - Automaticaly Change an Role Color(discord.py - 自动更改角色颜色)

                  <small id='T3FnZ'></small><noframes id='T3FnZ'>

                    <legend id='T3FnZ'><style id='T3FnZ'><dir id='T3FnZ'><q id='T3FnZ'></q></dir></style></legend>
                    <i id='T3FnZ'><tr id='T3FnZ'><dt id='T3FnZ'><q id='T3FnZ'><span id='T3FnZ'><b id='T3FnZ'><form id='T3FnZ'><ins id='T3FnZ'></ins><ul id='T3FnZ'></ul><sub id='T3FnZ'></sub></form><legend id='T3FnZ'></legend><bdo id='T3FnZ'><pre id='T3FnZ'><center id='T3FnZ'></center></pre></bdo></b><th id='T3FnZ'></th></span></q></dt></tr></i><div id='T3FnZ'><tfoot id='T3FnZ'></tfoot><dl id='T3FnZ'><fieldset id='T3FnZ'></fieldset></dl></div>

                          <tfoot id='T3FnZ'></tfoot>

                          • <bdo id='T3FnZ'></bdo><ul id='T3FnZ'></ul>
                              <tbody id='T3FnZ'></tbody>