2016-07-26 17 views
0

ボタンを押すと画面間を切り替えるプログラムがあります。以前の画面のtextinput、私の問題は、diffirentクラスでは、私はオブジェクトプログラミングにかなり新しいですので、私の質問は愚かに見えるかもしれませんが、私の意見では、プログラムは、ボタンが押されただけでなく、現在のウィジェットを他のクラスのウィジェットに変更するだけです。ここで Kivy:ScreenManagerを使用して、前の画面のテキストでラベル付けします。

は私のコードです:

import kivy 
kivy.require('1.8.0') 

from kivy.app import App 
from kivy.uix.screenmanager import Screen, ScreenManager 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.label import Label 
from kivy.uix.button import Button 
from kivy.properties import ObjectProperty 
from kivy.uix.textinput import TextInput 

class ScreenOne(Screen): 

    def __init__ (self,**kwargs): 
     super (ScreenOne, self).__init__(**kwargs) 

     my_box1 = BoxLayout(orientation='vertical') 
     self.my_label1 = TextInput(text="BlaBlaBla on screen 1", font_size='24dp') 
     my_button1 = Button(text="Go to screen 2",size_hint_y=None, size_y=100) 
     my_button1.bind(on_press=self.changer) 
     my_box1.add_widget(self.my_label1) 
     my_box1.add_widget(my_button1) 
     self.add_widget(my_box1) 

    def changer(self,*args): 
     self.manager.current = 'screen2' 

class ScreenTwo(Screen): 

    def __init__(self,**kwargs): 
     super (ScreenTwo,self).__init__(**kwargs) 

     my_box1 = BoxLayout(orientation='vertical') 
     my_label1 = Label(text="BlaBlaBla on screen 2",font_size='24dp') 
     my_button1 = Button(text="Go to screen 1",size_hint_y=None, size_y=100) 
     my_button1.bind(on_press=self.changer) 
     my_box1.add_widget(my_label1) 
     my_box1.add_widget(my_button1) 
     self.add_widget(my_box1) 

    def changer(self,*args): 
     self.manager.current = 'screen1' 

class TestApp(App): 

     def build(self): 
      my_screenmanager = ScreenManager() 
      screen1 = ScreenOne(name='screen1') 
      screen2 = ScreenTwo(name='screen2') 
      my_screenmanager.add_widget(screen1) 
      my_screenmanager.add_widget(screen2) 
      return my_screenmanager 

if __name__ == '__main__': 
    TestApp().run() 

任意のヘルプapreciated

おかげ

答えて

1

あなたは管理者のget_screen()メソッドを使用すると、このように、その属性を設定することができます。

from kivy.app import App 
from kivy.uix.screenmanager import Screen,ScreenManager 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput 
from kivy.uix.button import Button 
from kivy.uix.label import Label 



class ScreenOne(Screen): 

    def __init__(self,**kwargs): 
     super(ScreenOne,self).__init__(**kwargs) 
     self.my_box1 = BoxLayout(orientation='vertical') 
     self.my_label1 = TextInput(text="BlaBlaBla on scr 1", font_size='24dp') 
     self.my_button1 = Button(text="Go to screen 2",size_hint_y=None, size_y=100) 
     self.my_button1.bind(on_press=self.changer) 
     self.my_box1.add_widget(self.my_label1) 
     self.my_box1.add_widget(self.my_button1) 
     self.add_widget(self.my_box1) 

    def changer(self,*args): 
     self.manager.get_screen("screen2").my_label1.text = self.my_label1.text # here you set screen2's my_label1 to your input 
     self.manager.current = 'screen2' 




class ScreenTwo(Screen): 
    def __init__(self,**kwargs): 
     super (ScreenTwo,self).__init__(**kwargs) 

     self.my_box1 = BoxLayout(orientation='vertical') 
     self.my_label1 = Label(text="BlaBlaBla on screen 2",font_size='24dp') 
     self.my_button1 = Button(text="Go to screen 1",size_hint_y=None, size_y=100) 
     self.my_button1.bind(on_press=self.changer) 
     self.my_box1.add_widget(self.my_label1) 
     self.my_box1.add_widget(self.my_button1) 
     self.add_widget(self.my_box1) 

    def changer(self,*args): 
     self.manager.current = 'screen1' 



class MyApp(App): 
    def __init__(self,**kwargs): 
     super(MyApp,self).__init__(**kwargs) 
     self.sm = ScreenManager() 

     self.sm.test = StringProperty("test") 

     self.sm.add_widget(ScreenOne(name = "screen1")) 
     self.sm.add_widget(ScreenTwo(name = "screen2")) 


    def build(self): 
     return self.sm 



if __name__ == "__main__": 
    MyApp().run() 
+0

最終的に、ありがとうpall!これはチャームのように動作します!!!! –

+0

@ Cid-El問題なし – EL3PHANTEN

関連する問題