やりたいこと
pythonとkivyで、スマホアプリを作ろうとしています。
そして、kivyで書いたレイアウトの内容を、スマホで使いやすいように常に下に表示したいのです。
いろいろやってみて、Screenmanagerで画面の切り替えをできるようになったのですが、レイアウトがうまくできません。
画像のように、一番上にある**[[refresh] [Time] [取消!]]**の行を、一番下に表示したいです。
「class Nav」になにか工夫をすれば良いと思うのですが、どなたかお知恵を貸してください。
pythonコード
python
1 2from kivy.app import App 3from kivy.uix.screenmanager import ScreenManager, Screen 4from kivy.uix.boxlayout import BoxLayout 5from kivy.uix.gridlayout import GridLayout 6from kivy.uix.button import Button 7from kivy.uix.label import Label 8from kivy.uix.spinner import Spinner 9from kivy.properties import StringProperty 10import japanize_kivy 11 12#ファイル名 13file = ["a","b","c"] 14 15###################################################################### 16class CustomSpinner(Spinner): 17 pass 18 19class MainScreen(Screen): 20 pass 21 22class Manager(ScreenManager): 23 def __init__(self): 24 super(Manager, self).__init__() 25 screen = Screen(name = 'Screen 1') 26 screen.add_widget(MainScreen(name='Screen 1')) 27 self.add_widget(screen) 28 base=Base('main') 29 self.add_widget(base) 30 31 def refresh(self): 32 self.clear_widgets(screens=[self.get_screen('main')]) 33 base=Base('main') 34 self.add_widget(base) 35 36class Nav(GridLayout): 37 def __init__(self,sm=None): 38 super(Nav, self).__init__() 39 self.sm = sm 40 self.cols =4 41 self.size_hint = (1,0.08) 42 43 def change(self, btn): 44 self.sm.current='main' 45 46 def goscreen(self,ins): 47 self.sm.current='Screen 1' 48 49class Base(Screen): 50 def __init__(self,name): 51 super(Base, self).__init__() 52 self.name=name 53 self.lay=GridLayout(cols = 3) 54 55 for i in range(10): 56 button = Button(text = "No." +str(i),on_press = self.click) 57 self.lay.add_widget(button) 58 self.add_widget(self.lay) 59 60 def click(self): 61 print("押しました") 62 63class Root(BoxLayout): 64 def __init__(self): 65 super(Root, self).__init__() 66 self.orientation = "vertical" 67 sm = Manager() 68 self.sm = sm 69 self.add_widget(Nav(sm=sm)) 70 self.add_widget(sm) 71 72class SampleApp(App): 73 def build(App): 74 return Root() 75 76if __name__ == '__main__': 77 SampleApp().run()
kvファイル(sample.kv)
kivy
1<MainScreen>: 2 BoxLayout: 3 orientation: 'vertical' 4 size: root.size 5 6 BoxLayout: 7 size_hint_y: 0.05 8 BoxLayout: 9 size_hint_y: 0.08 10 CustomSpinner: 11 text: 'ファイルを選択' 12 13 Label: 14 text: "←ファイルを選択" 15 Widget: 16 size_hint_x: 0.5 17 18<Nav>: 19 rows: 1 20 cols: 4 21 Button: 22 id:zaseki 23 text:"席表" 24 on_release: root.change(self) 25 Button: 26 text:"ファイル" 27 on_release: root.goscreen(self) 28 29<Root>: 30 BoxLayout: 31 orientation: 'horizontal' 32 size_hint: (1,0.08) 33 Button: 34 text:'refresh' 35 Label: 36 text: 'Time' 37 Button: 38 text: '取消!' 39
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。