Kivy Screen Manager 無法實現 Window.bind(on_request_close=self.on_request_close)



我正在尝试做"Window.bind(on_request_close=self.on_request_close("这样我就可以加入一些线程并顺利关闭应用程序。。。但我已经尝试过了,我不知道如何实现它。

我尝试了很多不同的代码变体,但似乎都不起作用。。。而且我似乎在网上找不到替代实现,比如通过.kv文件或其他什么。。。(我很笨…(

这是我的.kv文件

WindowManager:
transition: NoTransition()
FirstWindow:
SecondWindow:

<FirstWindow>:
name: "first"
BoxLayout:
orientation: "vertical"
size: root.width, root.height
Button:
text: "Go To Next Screen"
on_release:
app.root.current = "second"

<SecondWindow>:
name: "second"
GridLayout:
id: "Container"
cols: 2
rows: 1
ScrollView:
id: "SideMenuScrollView"
size_hint: ("0.3dp", 1)
do_scroll_y: True
do_scroll_x: False
StackLayout:
id: "SideMenuStack"
size_hint_y: None
height: self.minimum_height
Button:
size_hint: (None, None)
size: ("92dp", "92dp")
Button:
size_hint: (None, None)
size: ("92dp", "92dp")

GridLayout:
size_hint: (1, 1)
id: "MyGrid"
size: (1, 1)
spacing: 10
padding: 10
cols: 1
rows: 2
TextInput:
id: "text_input"
multiline: False
text: ""
size_hint: (1, None)
height: "30dp"

Button:
text: "Do Stuff"
on_release: root.DoStuff()
size_hint: (1, None)
height: "70dp"

这是我的代码

class WindowManager(ScreenManager):
pass

class FirstWindow(Screen):
pass

class SecondWindow(Screen):
def on_request_close(self):
SecondWindow.textpopup(title='Close the App?', text='Are you sure?')
return True
def DoStuff(self):
pass

kv = Builder.load_file('new_window.kv')

class AwesomeApp(App):
def build(self):
return kv

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

我想我想明白了。。。只是现在有更多的错误XD

对于任何想知道的人,我把

def on_enter(self):
Window.bind(on_request_close=self.on_request_close)

class SecondWindow内部,它成功了!但现在我得到了";在联接中引发RuntimeError("无法联接当前线程"(;所以…英雄。。。

最新更新