我正在使用并发.futures,目前看来我的代码根据需要运行两个函数,但在两个函数完成之前第一个弹出窗口不会显示(问题是第二个函数首先关闭第一个对话框而结束-box,然后打开第二个对话框)。
这是我的完整 .py 代码:
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivymd.app import MDApp
from kivymd.uix.dialog import MDDialog
import concurrent.futures
KV = '''
<Content>
orientation: "vertical"
spacing: -40
MDSpinner:
size_hint: None, None
size: dp(46), dp(46)
pos_hint: {'center_x': 0.1}
active: True
MDLabel:
text: "Processing..."
pos_hint: {'center_x': .7}
FloatLayout:
MDFlatButton:
text: "ALERT DIALOG"
pos_hint: {'center_x': .5, 'center_y': .5}
on_release: app.start()
'''
class Content(BoxLayout):
pass
class Example(MDApp):
dialog = None
def build(self):
return Builder.load_string(KV)
def start(self):
with concurrent.futures.ThreadPoolExecutor() as executor:
f1 = executor.submit(self.pop_up1())
f2 = executor.submit(self.test())
def pop_up1(self):
'''Displays a pop_up with a spinning wheel'''
if not self.dialog:
self.dialog = MDDialog(
size_hint=(.45, None),
auto_dismiss=True,
type="custom",
content_cls=Content(),
)
self.dialog.open()
def test(self):
'''Counts to 1000000 and then it closes pop_up1 and opens pop_up2'''
for number in range(1000000):
print(number)
self.dismiss()
self.pop_up2()
def pop_up2(self):
if not self.dialog:
self.dialog = MDDialog(
title="Done",
size_hint=(.6, None),
text="Done",
)
self.dialog.open()
def dismiss(self, *args):
self.dialog.dismiss()
Example().run()
摇曳的蔷薇
相关分类