【发布时间】:2017-10-12 17:54:29
【问题描述】:
这段代码有什么问题? (它显示一个空屏幕) 我想要 2 个屏幕,每个屏幕上都有 1 个按钮来简单地添加一个小部件(来自 python 代码),以及 1 个按钮来切换到另一个屏幕。 当我运行代码时,我可以看到一个没有按钮和标签的空白屏幕。如何解决所有这些问题?
PS:当我执行以下操作时,它完美地工作:
class MyScreenManager(ScreenManager):
pass
# ... and
class MyAppli(App):
def build(self):
Window.clearcolor=(1,1,1,1)
return MyScreenManager()
调试.py:
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.label import Label
from kivy.lang import Builder
class MyScreenManager(ScreenManager):
def initialize(self): # I know this is not necessary,
# but in my real code, i have to proceed like this.
# ... (some instructions)
pass
class Menu1(Screen):
def add_label(self):
self.add_widget(Label(text="Hello", color=(1,0,0,1)))
class Menu2(Screen):
def add_label(self):
self.add_widget(Label(text="Hello", color=(1,0,0,1)))
Builder.load_file("debug.kv")
class MyAppli(App):
def build(self):
Window.clearcolor = (1,1,1,1)
return MyScreenManager().initialize()
if __name__ == '__main__':
MyAppli().run()
debug.kv:
#:kivy 1.9.1
<MyScreenManager>:
Menu1:
id: menu1
Menu2:
id: menu2
<Menu1>:
name: "screen1"
BoxLayout:
Label:
text:"Screen 1"
color:(1,0,0,1)
Button:
text:"Add a label"
size:(200,50)
size_hint:(None,None)
background_color:(1,0,0,1)
on_press:
root.manager.ids.menu1.add_label()
Button:
text:"Go to screen 2"
size:(200,50)
size_hint:(None,None)
background_color:(1,0,0,1)
on_press:
root.manager.current = "screen2"
<Menu2>:
name: "screen2"
BoxLayout:
Label:
text:"Screen 2"
color:(1,0,0,1)
Button:
text:"Add a label"
size:(200,50)
size_hint:(None,None)
background_color:(1,0,0,1)
on_press:
root.manager.ids.menu2.add_label()
Button:
text:"Go to screen 1"
size:(200,50)
size_hint:(None,None)
background_color:(1,0,0,1)
on_press:
root.manager.current = "screen1"
【问题讨论】: