완벽하게 기능하는 코드 :
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
Builder.load_string("""
#:kivy 1.8
<StartScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Start Server"
on_press:
root.start_server()
root.manager.current='stopscreen'
<StopScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Stop Server"
on_press:
root.stop_server()
root.manager.current='startscreen'
""")
class StartScreen(Screen):
def start_server(self):
print('Server started.')
class StopScreen(Screen):
def stop_server(self):
print('Server stopped.')
sm = ScreenManager(transition=NoTransition())
sm.add_widget(StartScreen(name='startscreen'))
sm.add_widget(StopScreen(name='stopscreen'))
class MySpecialApp(App):
def build(self):
return sm
MySpecialApp().run()
이제 Kivy Docs에 따르면이 코드의 시작 부분에로드 된 문자열을 외부 파일 인 myspecial.kv에 넣는 것이 가능해야합니다. 그렇게하면 화면이 비어 있고 버튼도 텍스트도 없습니다. 그 이유는 무엇이며 어떻게 작동하도록 할 수 있습니까?
myspecial.kv
파일은 응용 프로그램이 시작될 때로드,하지만 당신은 그 전에 위젯을 초기화한다. 을 실행하는 지점에서 sm = ScreenManager(transition=NoTransition())
kv가 아직로드되지 않았으므로 ScreenManager에 예상 된 스타일이 없습니다.
대신 build
메서드 내에서 위젯을 만들어야합니다 . 이 메서드가 실행되기 전에 kv 파일이로드되므로 모든 것이 제대로 작동해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다