質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

4回答

909閲覧

Python メニューボタン押すと画面切り替えがしたいです。

night9071

総合スコア13

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2017/09/14 04:37

###前提・実現したいこと
Python初心者です。
Pythonとkivyを使ってMac上のアプリケーションを作りたいと思っています。
メニューバーのボタンを押すと、画面が切り替わるようにしたいです。
ボタンを押すと画像が消えて、かつ他のものを表示できれば切り替えになるんじゃないかと思ったので<現状>を考えてみました。
メニューバーは消さずに残したいです。
画像だけ消す方法、もっとスマートな方法があれば教えてください。

<現状>

  • ターミナルから起動するとメニューバーが表示される。
  • メニューバーのボタン(真ん中と右)を押すと別ファイルに定義されている画像が表示される。
  • メニューバーのボタン(左側)を押すと、画像とメニューバーが消える

以上です。
よろしくお願いします。
###該当のソースコード(main.py)

Python

1import kivy 2kivy.require('1.7.3') 3from background import Bird2 4from bg import Bird3 5 6from kivy.app import App 7from kivy.uix.widget import Widget 8from kivy.graphics import Rectangle 9from kivy.core.window import Window 10from kivy.clock import Clock 11 12from kivy.properties import StringProperty, ListProperty 13Window.clearcolor=[0.999,0.89,0.999,1] 14 15class TextWidget(Widget): 16 text = StringProperty() 17 color = ListProperty([1,1,1,1]) 18 19 def __init__(self, **kwargs): 20 super(TextWidget, self).__init__(**kwargs) 21 self.text = 'start' 22 23 def buttonClicked(self): 24 self.clear_widgets() 25 26 def buttonClicked2(self): 27 bird3 = Bird3() 28 self.add_widget(bird3) 29 30 def buttonClicked3(self): 31 bird2 =Bird3() 32 self.add_widget(bird2) 33 34class TestApp(App,Widget): 35 def __init__(self, **kwargs): 36 super(TestApp, self).__init__(**kwargs) 37 self.title = 'Apomol' 38 39if __name__ == '__main__': 40 TestApp().run()

###該当のソースコード(background.py)
background.pyとbg.pyは同じ内容です。

Python

1from kivy.app import App 2from kivy.uix.button import Button 3from kivy.app import App 4from kivy.uix.widget import Widget 5from kivy.graphics import Rectangle 6from kivy.core.window import Window 7 8class Bird2(Widget): 9 10 def __init__(self, **kwargs): 11 super(Bird2, self).__init__(**kwargs) 12 self.text = 'start' 13 bird1 = Bird1() 14 self.add_widget(bird1) 15 16 17class Bird1(Widget): 18 def __init__(self): 19 super(Bird1, self).__init__() 20 21 22 self.canvas.add(Rectangle( 23 source='bird.png', 24 size=(100, 100), pos=(300, 100))) 25 26if __name__ == '__main__': 27 Bird2().run()

###該当のソースコード(test.kv)

TextWidget: # ルートに追加 <TextWidget>: BoxLayout: orientation: 'vertical' size: root.size # ラベル Label: size_hint_y: 0.7 id: label1 font_size: 20 text: root.text color: root.color BoxLayout: size_hint_y: 0.1 padding: 10,10,20, 10 Button: id: button1 text: "morning" font_size: 20 on_press: root.buttonClicked() # ボタンをクリックした時 Button: id: button2 text: "day" font_size: 20 on_press: root.buttonClicked2() # ボタンをクリックした時 Button: id: button3 text: "night" font_size: 20 on_press: root.buttonClicked3() # ボタンをクリックした時

###補足情報(言語/FW/ツール等のバージョンなど)
MacOS Sierra ver10.12
python 2.7.3
kivy
Xcode

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

>ターミナルから起動するとメニューバーが表示される。
>メニューバーのボタン(真ん中と右)を押すと別ファイルに定義されている画像が表示される。
>メニューバーのボタン(左側)を押すと、画像とメニューバーが消える

Carousel と actionbarを使用すると実現できます。
以下の記事をご参考にしてください。

Python Kivyの使い方③ ~WebAPIとの連携(リクエストの送受信から結果表示まで)~

add_widgetとclear_widgetを使用して実現した場合は以下を参考にしてください。
Python Kivyの使い方② ~電卓を作成する~

投稿2017/09/14 15:33

dario_okazaki

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一応ScreenManagerを使うとこんな感じです。

python

1import kivy 2kivy.require('1.7.3') 3 4from kivy.app import App 5from kivy.uix.boxlayout import BoxLayout 6from kivy.core.window import Window 7Window.clearcolor=[0.999,0.89,0.999,1] 8 9 10class TextWidget(BoxLayout): 11 12 def __init__(self, **kwargs): 13 super(TextWidget, self).__init__(**kwargs) 14 self.text = 'start' 15 16 17class TestApp(App): 18 19 def __init__(self, **kwargs): 20 super(TestApp, self).__init__(**kwargs) 21 self.title = 'Apomol' 22 23 24if __name__ == '__main__': 25 TestApp().run()
TextWidget: # ルートに追加 <TextWidget>: orientation: 'vertical' ScreenManager: size_hint_y: 0.7 id: scrmgr Screen: name: 'blank' Screen: name: 'bird' Image: source: 'bird.png' BoxLayout: size_hint_y: 0.1 padding: 10,10,20, 10 Button: text: "morning" font_size: 20 on_press: scrmgr.current = 'blank' Button: text: "day" font_size: 20 on_press: scrmgr.current = 'bird' Button: text: "night" font_size: 20 on_press: scrmgr.current = 'bird'

イメージ説明

投稿2017/09/14 12:56

gottadiveintopy

総合スコア736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

全部消えちゃうのはrootのwidgetのclear_widgetsを呼んでるからですね。

python

1 def buttonClicked(self): 2 self.clear_widgets()

投稿2017/09/14 12:21

gottadiveintopy

総合スコア736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私もkivy奮闘中です。

基本的にScreenManagerを使っての画面切り替えになるようです。

ScreenManager動画

こちらの動画が参考になりました。

投稿2017/09/14 07:34

EdwardRichtofen

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問