2017-05-28 2 views
1

Ich habe ein Problem beim Zuweisen von Aktionen zu den Schaltflächen, die ich in einem Raster in kivy eingefügt habe. Jede Hilfe wäre willkommen.Kivy: Zuweisen von Aktionen/Klassifizieren von Schaltflächen im Raster

Ich bin neu in allen Dingen Codierung, aber ich habe versucht, dies auszuarbeiten. Ich habe versucht, der Schaltfläche einen Namen zuzuweisen, aber es funktioniert nicht, weil die Funktion 'on_press' nicht für eine Zeichenkette, sondern nur für eine Schaltfläche funktioniert. Gibt es eine Möglichkeit, meine Saite als Knopf zu klassifizieren oder mache ich alles falsch? Ich möchte, dass jede Taste eine andere Aktion ausführt, damit sie nicht als dieselbe klassifiziert werden kann.

Hier ist mein Code:

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() 

Danke, Ryan

Antwort

0

Also, auf der Linie 12, print('The button 1 is being pressed' % instance.text) Sie eine Zeichenfolge zu formatieren mögen, jedoch Sie nicht angeben, wo die Instanz Text setzen . Ansonsten bearbeitet dieser Code, den ich ein wenig funktioniert gut (bitte beim nächsten Mal alle nicht benötigten Code aus dem Beispiel entfernen), druckt es, wenn die „a“ Taste gedrückt wird:

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

Machen Sie dasselbe für andere Tasten mit anderen Funktionen und du bist fertig.

Verwandte Themen