1
我已經構建了一個簡單的程序,用於掃描藍牙設備並在按鈕上顯示其名稱/地址。代碼:在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
所以,基本上,我想A.)發現藍牙設備並將其添加到devList,B.)創建一個按鈕顯示的設備名稱/地址在devList,C.每個設備)允許讓用戶點擊一個按鈕並打印該按鈕分配給的設備的名稱。我確信在這部分代碼中必須有一些重要的結構變化才能工作,但我無法弄清楚究竟是什麼。
您可以替換'name = ...;順便說一句,如果str(lookup ...:name = ...''with'name = lookup_name(device)or'Unknown device'',順便說一下。 – TigerhawkT3
你試過了嗎?on_release = lambda x = name:self.optionmenu名字)''與'def optionmenu(self,name):print name'? – TigerhawkT3
@ TigerhawkT3是的,點擊任何按鈕都會返回相同的名稱,我猜測它找到的最後一個。 – Karrigan