on_releaseを使用して.kvファイル内の画面を切り替えるのは比較的簡単だと思います。しかし、私のボタンを.pyファイルで作成したままにしたいので、このメソッドを使いたくありません。私は、14番目のボタンが押されたときに発生する機能を追加するために以下を行っています。プログラムでボタンが押されると、何も起こりません。 sm.currentへの画面の他の名前を試してエラーを投げた: "kivy.uix.screenmanager.ScreenManagerException:14番目のボタンが押されたときに名前が" InputScreen "の画面がありません。(Kivy Python)ボタンを押して画面を切り替える.pyファイル内
# Kivy Formatting
kv_text='''\
<MyScreenManager>:
LandingScreen:
InputScreen:
<[email protected]>:
name: 'input_sc'
AnchorLayout:
id: anchor_1
<[email protected]>:
name: 'landing_sc'
GridLayout:
id: grid_1
cols: 5
height: 480
width: 800
spacing: 25, 20
padding: 25,25
'''
# Screen Manager
class MyScreenManager(ScreenManager):
pass
# Main screen with button layout
class LandingScreen(Screen):
def __init__(self, **kwargs):
super(LandingScreen, self).__init__(**kwargs)
self.buttons = [] # add references to all buttons here
Clock.schedule_once(self._finish_init)
# IDs have to be used here because they cannot be applied until widget initialized
def _finish_init(self, dt):
self.ids.grid_1.cols = 5
# Loop to make 15 different buttons on screen
for x in range(15):
self.buttons.append(Button(text='button {}'.format(x)))
self.ids.grid_1.add_widget(self.buttons[x])
self.buttons[x].background_normal = 'YOUTUBE.png'
def SwitchScreen(self,*args):
sm.current = 'input_sc'
sm = ScreenManager()
sm.add_widget(InputScreen(name='input_sc'))
sm.add_widget(LandingScreen(name='landing'))
self.buttons[14].bind(on_release=SwitchScreen)
# Input screen
class InputScreen(Screen):
pass
class MySubApp(App):
def build(self):
return MyScreenManager()
def main():
Builder.load_string(kv_text)
app = MySubApp()
app.run()
if __name__ == '__main__':
main()
誰かが私の現在のロジックの穴を理解するのを助けることができたら、私はそれを非常に高く評価します。ありがとう。
おかげで、私はそのドキュメントの今参照してください。私は一般的にプログラミングに慣れていないので、私を許してください。しかし、Kivyのようなシステムですべてのdescrepenciesを学ぶ最良の方法は何ですか?公式以外の文書はありますか?あるいは経験を通して純粋に知っていることを学んだことがありますか?ありがとう – John
私がKivyを使い始めたとき、公式のドキュメント(それは比較的新しいフレームです)を除いて、情報はほとんどありませんでした。最初のソースは常に公式のドキュメンテーションです([Kivy Tutorials](https://kivy.org/docs/tutorials-index.html)がこれに適しています)、これ以外にもチュートリアル、YouTubeでのビデオチュートリアル、Kivy Googleグループ、もちろん[so]です心配する必要はありません。コードを学習する唯一の真の方法は、練習し、間違いを犯し、それらから学ぶことです。ところで、それは決して終わらない学習プロセスです:) @Austin – FJSevilla