2017-05-28 13 views
1

私はkivyのグリッドに入れたボタンにアクションを割り当てることに問題があります。どんな助けもありがとう。Kivy:グリッドにアクション/分類ボタンを割り当てる

私はすべてのことをコーディングするのは初めてですが、これを解決しようとしています。私はボタンに名前を割り当てようとしましたが、 'on_press'機能は文字列のボタンだけでは機能しないため動作しません。グリッドから文字列をボタンとして分類する方法はありますか、それとも間違っているのですか?私は、すべてのボタンが異なるアクションを実行して、同じものとして分類できないようにしたいと思います。ここで

は私のコードは次のとおりです。

import kivy 
kivy.require('1.10.0') 
from kivy.uix.gridlayout import GridLayout 
from kivy.app import App 
from kivy.core.window import Window 
from kivy.uix.button import Button 


    class MyApp(App): 

     def build(self): 
      def callback(instance): 
       print('The button 1 is being pressed' % instance.text) 

      # test 1: I dont think this works because it doesn't work with the grid structure but I tried it anyways 
    # btn1 = Button(background_color=blue, text='a', size_hint_x=None, width=butw) 

    # test 2: I don't think it works because it is not classified as a button, but a string. 
    # btn1 = "layout.add_widget(Button(background_color=blue, text='a', size_hint_x=None, width=butw))" 

      btn1.bind(on_press=callback) 

      layout = GridLayout(cols=1, rows=28, row_force_default=True, row_default_height=buth) 
      layout.add_widget(Button(background_color=blue, text='a', size_hint_x=None, width=butw)) 
      layout.add_widget(Button(background_color=blue2, text='b', size_hint_x=None, width=butw)) 
      layout.add_widget(Button(background_color=blue, text='c', size_hint_x=None, width=butw)) 
    # cont. 
      return layout 

    MyApp().run() 

おかげで、ライアン

答えて

0

ので、ライン12、print('The button 1 is being pressed' % instance.text)にあなたは、文字列をフォーマットしようとしているが、あなたはどこインスタンスのテキストを入れて指定されていませんでした。

import kivy 
kivy.require('1.10.0') 
from kivy.uix.gridlayout import GridLayout 
from kivy.app import App 
from kivy.uix.button import Button 


class MyApp(App): 

    def build(self): 
     def callback(instance): 
      print('The button 1 is being pressed', instance.text) 

     # test 1: I dont think this works because it doesn't work with the grid structure but I tried it anyways 
     btn1 = Button(text='a', size_hint_x=None, width=30) 

     btn1.bind(on_press=callback) 

     layout = GridLayout(cols=1, rows=28) 
     layout.add_widget(btn1) 
     layout.add_widget(Button(text='b', size_hint_x=None, width=30)) 
     layout.add_widget(Button(text='c', size_hint_x=None, width=30)) 

     return layout 

MyApp().run() 

App works fine

は、同じことを実行します。それ以外の場合、このコードは、私は「」ボタンが押されたとき、それは印刷し、正常に動作します(例から、次の時間を、すべての不要なコードを削除してください)少し編集しました他のボタンが他の機能を持っていれば完了です。

関連する問題