【发布时间】:2017-09-10 19:30:17
【问题描述】:
我一直在尝试通过使用Kivy Screen manager reference in kv language 中的信息从Accessing id/widget of different class from a kivy file (.kv) using Kivy's clock? 建立我的kv 语言技能。不幸的是,后一篇文章不包含完整的工作代码示例,因此我无法理解如何在多屏幕 Kivy 应用程序的特定屏幕上更改文本元素。
在搜索了一天的大部分时间后,我找不到任何关于如何用 kv 语言构建多屏应用程序的简单具体工作示例,所以我在这里。我似乎无法设置对各个屏幕的正确引用,因此我可以更改它们。
在下面的简单示例代码中,我构建了一个在四个屏幕之间自动切换的四屏应用程序。我想从这个问题中学到两点;
尽可能多地设置屏幕管理器的 kv 语言代码。 IE。 kv 语言可以减少或消除第 43 到 47 行吗?
实际的 python 代码(我相信它会在应用程序的第 56 行)在第二次显示之前将第一个屏幕上的文本更改为“嗨,我是第五个屏幕”。
代码如下。提前致谢。 ....布拉德....
import kivy
kivy.require('1.10.0')
from kivy.app import App
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_string("""
<FirstScreen>:
name: '_first_screen_'
Label:
id: first_screen
text: "Hi I'm The First Screen"
<SecondScreen>:
name: '_second_screen_'
Label:
id: second_screen
text: "Hi I'm The Second Screen"
<ThirdScreen>:
name: '_third_screen_'
Label:
id: third_screen
text: "Hi I'm The Third Screen"
<FourthScreen>:
name: '_fourth_screen_'
Label:
id: fourth_screen
text: "Hi I'm The Fourth Screen"
""")
class FirstScreen(Screen):
pass
class SecondScreen(Screen):
pass
class ThirdScreen(Screen):
pass
class FourthScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(FirstScreen())
sm.add_widget(SecondScreen())
sm.add_widget(ThirdScreen())
sm.add_widget(FourthScreen())
class SwitchingScreenApp(App):
def build(self):
Clock.schedule_once(self.screen_switch_one, 2)
Clock.schedule_once(self.screen_switch_two, 4)
Clock.schedule_once(self.screen_switch_three, 6)
Clock.schedule_once(self.screen_switch_four, 8)
# Want to place the code here that changes the first_screen text to "Hi I'm The Fifth Screen"
Clock.schedule_once(self.screen_switch_one, 10)
return sm
def screen_switch_one(a,b):
sm.current = '_first_screen_'
def screen_switch_two(a,b):
sm.current = '_second_screen_'
def screen_switch_three(a,b):
sm.current = '_third_screen_'
def screen_switch_four(a,b):
sm.current = '_fourth_screen_'
SwitchingScreenApp().run()
【问题讨论】:
标签: user-interface kivy kivy-language