2016-04-19 14 views
1

Ich habe ein einfaches Programm erstellt, das nach Bluetooth-Geräten sucht und ihren Namen/ihre Adresse auf Schaltflächen anzeigt. Code:Erstellen von verschiedenen Schaltflächen in einer Schleife in Python/Kivy?

def discover(self, *args): 
    devList = discover_devices() 
    for device in devList: 
     name = str(lookup_name(device)) 
     if str(lookup_name(device)) == "": 
      name = "Unknown device" 
     deviceinfo = "[color=1f358e][font=tahoma]Device name: [color=1f358e][font=tahoma]" + str(name) + "\n[color=1f358e][font=tahoma]MAC address: [color=1f358e][font=tahoma]" + str(device) 
     btnDevice = Button(text=deviceinfo, markup = True, font_size='17sp') 
     btnDevice.bind(on_release=self.optionmenu) 
     box.add_widget(btnDevice) 


    self.boxes.add_widget(box) 
    layout.clear_widgets() 

def optionmenu(self, *args): 
    print name 

Also, im Grunde möchte ich A.) Entdecken Sie Bluetooth-Geräte und fügen Sie sie zu devlist, B.) den Gerätenamen/Adresse für jedes Gerät in devlist, C.) eine Schaltfläche erstellen Anzeigen zulassen Klicken Sie auf eine Schaltfläche, um den Namen des Geräts auszugeben, dem die Schaltfläche zugewiesen ist. Ich bin mir sicher, dass es in diesem Teil des Codes einige signifikante strukturelle Veränderungen geben muss, damit dies funktioniert, aber ich kann nicht genau herausfinden, was.

+0

Sie können 'name = ...; if str (lookup ...: name = ... 'mit' name = lookup_name (device) oder 'Unknown device'', übrigens – TigerhawkT3

+0

Und hast du es versucht? on_release = lambda x = name: self.optionsmenu (name) 'mit' def optionmenu (selbst, name): druck name'? – TigerhawkT3

+0

@ TigerhawkT3 Yeah, klicken Sie auf eine Schaltfläche gibt den gleichen Namen zurück, ich vermute, die letzte, die es gefunden hat .. – Karrigan

Antwort

0

Ich glaube, das sollte den Trick tun.

def discover(self, *args): 
    devList = discover_devices() 
    for device in devList: 
     name = str(lookup_name(device)) 
     if str(lookup_name(device)) == "": 
      name = "Unknown device" 
     deviceinfo = "[color=1f358e][font=tahoma]Device name: [color=1f358e][font=tahoma]" + str(name) + "\n[color=1f358e][font=tahoma]MAC address: [color=1f358e][font=tahoma]" + str(device) 
     btnDevice = Button(text=deviceinfo, markup = True, font_size='17sp') 
     btnDevice.bind(on_release=self.optionmenu) 
     box.add_widget(btnDevice) 


    self.boxes.add_widget(box) 
    layout.clear_widgets() 

def optionmenu(self, instance): 
    print instance.text 

"Instanz" bedeutet einfach das Knopfobjekt, auf das Sie gedrückt haben. Sie können dies natürlich zu dem ändern, was Ihnen gefällt.

Verwandte Themen