[英]How do I navigate between screens on selecting a dropdown value in kivy?
我的 kivy 應用中有多個屏幕: 1. 主屏幕、屏幕 1、屏幕 2、屏幕 3 和屏幕 4。
主屏幕有主下拉列表和子下拉列表。 主下拉菜單顯示組,在選擇特定組時,子下拉菜單顯示與該組關聯的屏幕。
從子下拉列表中選擇時,我想導航到特定屏幕。 我的代碼沒有顯示任何錯誤,但我無法導航到選定的屏幕。 請幫忙。
文件
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ListProperty, DictProperty
class windowManager(ScreenManager):
pass
class MainScreen(Screen):
values_dict = {'Group1':['Screen1', 'Screen2'],
'Group2':['Screen3', 'Screen4']}
sub_values = ListProperty()
def values_update(self,text):
self.sub_values = self.values_dict[text]
if text != 'Select group type':
self.ids.sub_drop.text = 'select ' + text + ' screen'
return 'select ' + text + ' screen'
def open_screen(self, text):
if text != 'select ' + self.ids.main_drop.text + ' screen':
sm = windowManager()
sm.current = text
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
pass
class Screen4(Screen):
pass
class appln(App):
def build(self):
return windowManager()
if __name__=="__main__":
appln().run()
應用程序
<WindowManager>:
MainScreen:
Screen1:
Screen2:
Screen3:
Screen4:
<MainScreen>:
name: 'main'
GridLayout:
cols:2
Spinner:
id: main_drop
size_hint: None, None
size: 200, 100
pos_hint:{'top': 1}
text: 'Select group type'
values: root.values_dict.keys()
on_text:
root.values_update(self.text)
Spinner:
id: sub_drop
size_hint: None, None
size: 230, 100
pos_hint:{'top': 1}
values: root.sub_values
on_text: root.open_screen(self.text)
<Screen1>:
name: 'Screen1'
Label:
text: 'This is screen 1'
<Screen2>:
name: 'Screen2'
Label:
text: 'This is screen 2'
<Screen3>:
name: 'Screen3'
Label:
text: 'This is screen 3'
<Screen4>:
name: 'Screen4'
Label:
text: 'This is screen 4'
在您的MainScreen
代碼中,該行:
sm = windowManager()
正在創建windowManager
的新實例,因此對該實例的任何使用都不會影響實際管理您的Screens
的windowManager
。 要解決此問題,只需將該行替換為對正確windowManager
的引用:
sm = self.manager
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.