2016-11-06 5 views
0

私の問題を追加しました表示されそれを修正するために何ができますか?Kivyのadd_widgetは唯一の最後のウィジェットがあり、次のコードで

from kivy.uix.togglebutton import ToggleButton 
from kivy.app import App 
from kivy.uix.screenmanager import ScreenManager,Screen 
from kivy.uix.gridlayout import GridLayout 

class check(Screen, GridLayout): 
    def __init__(self, **kwargs): 
     super(check, self).__init__(**kwargs) 
     self.cols=3 
     btn1 = ToggleButton(text='Male', group='sex',) 
     btn2 = ToggleButton(text='Female', group='sex', state='down') 
     btn3 = ToggleButton(text='Mixed', group='sex',) 

     self.add_widget(btn3) 
     self.add_widget(btn2) 
     self.add_widget(btn1) 


class Bridges(App): 
    def build(self):  
     sm = ScreenManager() 

     newkid = check(name='newkid') 
     sm.add_widget(newkid) 

     return sm 
Bridges().run() 

答えて

0

問題は継承の順序である:

は、ここに私のコードです。

クラスcheckは、2つのクラス(ScreenおよびGridLayout)を継承しています。プロパティとメソッドの継承が左から右に移動するので、親クラスの位置は重要です。

私が意味するのは、レイアウトを担当するメソッドは、Screenから継承されており、希望通りにはGridLayoutではありません。
修正は簡単です:スワップcheck定義のクラス順:代わりに

class check(Screen, GridLayout): 
+0

class check(GridLayout, Screen): 

はありがとうございました。 –

関連する問題