2017-09-04 59 views
2

我需要在完成另一個類的功能後,或至少在特定的時間後(如3秒)彈出顯示加載的gif圖像 以通知用戶等待操作功能自動關閉在基維的彈出

loading image

*******蟒蛇******

from kivy.app import App 
from kivy.uix.popup import Popup 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 

class ScreenManagement(ScreenManager): 
    pass 

class progress(Popup): 
    pass 
class Func_(Screen): 
# function 
    pass 

presentation = Builder.load_file("Try_.kv") 
class MainApp(App): 

    def build(self): 
     return presentation 

if __name__ == "__main__": 
    MainApp().run() 

******** KV文件****** ***

#:import Factory kivy.factory.Factory 

<Popup>: 
    separator_color: 1, 1, 1, 1 
    background: "White.png" 
    Button: 
     id: btn 
     disabled: True 
     background_disabled_normal: "White.png" 
     text: "Hello" 
     Image: 
      source: "Loading.gif" 
      size: root.size 

ScreenManagement: 
    PopupBox: 

<PopupBox>: 
    BoxLayout: 
     Button: 
      text: "Click" 
      on_release: 
       Factory.Popup().open() 

回答

1

您必須添加一個函數來關閉彈出消息並使用Clock.schedule_once來調用該函數。有關詳細信息,請參閱下面的示例。

main.py
from kivy.app import App 
from kivy.uix.popup import Popup 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.clock import Clock 


class ScreenManagement(ScreenManager): 
    pass 


class Progress(Popup): 

    def __init__(self, **kwargs): 
     super(Progress, self).__init__(**kwargs) 
     # call dismiss_popup in 2 seconds 
     Clock.schedule_once(self.dismiss_popup, 2) 

    def dismiss_popup(self, dt): 
     self.dismiss() 


class Func(Screen): 
    # function 
    pass 


class MainApp(App): 

    def build(self): 
     return ScreenManagement() 

if __name__ == "__main__": 
    MainApp().run() 

main.kv
#:import Factory kivy.factory.Factory 
#:import FadeTransition kivy.uix.screenmanager.FadeTransition 

<Progress>: 
    separator_color: 1, 1, 1, 1 
    background: "White.png" 
    Button: 
     id: btn 
     disabled: True 
     background_disabled_normal: "White.png" 
     text: "Hello" 
     Image: 
      source: "Loading.gif" 
      size: root.size 

<ScreenManagement>: 
    transition: FadeTransition() 
    Func: 

<Func>: 
    BoxLayout: 
     Button: 
      text: "Click" 
      on_release: 
       Factory.Progress().open() 

輸出

enter image description here