【发布时间】:2021-01-07 09:41:50
【问题描述】:
好的,所以我的目标是,当您按下按钮让我们说“anotherScreen”时,我想被发送到“Screen 0”。在这里,根据从 SQLite 数据库中获取的 0 或 1 值,屏幕上的按钮“btn”会将您发送到 screen1(如果值为 0)或如果值不是 0 (1) 则发送到 screen2。然而,这会产生一些错误。
这里有一些代码可以更好地解释它:
pythonfile.py
import sql_server_file as app_users
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
class screen0(Screen):
def __init__(self):
self.sql_cursor = app_users.AppUsers()
self.user_id = self.manager.get_screen("anotherScreen").user_id # <---- This gives
# me an NoneType Error
self.value = self.sql_cursor.fetch_ids100_done_status(self.user_id)
if(self.value == 0):
self.ids["btn"].on_release = "app.root.current = 'screen1'" # <---- This is
# syntactically wrong, however, how can I do this?
else:
self.ids["btn"].on_release = "app.root.current = 'screen2'" # <-- See above
class screen1(Screen):
pass
class screen2(screen):
pass
class anotherScreen(Screen):
def __init__(self):
self.user_id = 0
class WindowManager(ScreenManager):
pass
class ReturnClass(App):
def build(self):
sm = ScreenManager()
sm.add_widget(anotherScreen())
sm.add_widget(screen0())
sm.add_widget(screen1())
sm.add_widget(screen2())
return sm
if __name__ == '__main__':
ReturnClass().run()
所以,当输入“anotherScreen”之后的屏幕时,我需要它“自动”运行。
出现错误:
AttributeError: 'NoneType' object has no attribute 'get_screen'
kivy 文件可能如下所示:
kivyfile.kv
WindowManager:
anotherScreen:
screen0:
screen1:
screen2:
<anotherScreen>:
Button:
text: "get to screen0"
on_release:
app.root.current = "screen0"
<screen0>:
Button:
text: "Get to either screen1 or screen2 depending on value in sqlite-database"
<screen1>:
Label:
text: "Screen1"
<screen2>:
Label:
text: "Screen2"
【问题讨论】: