[英]Loop for multiple buttons in Python, Kivy
我在 Python/Kivy 中通過 for 循環創建了多個按鈕。 我不知道如何為每個按鈕 on_press 和 on_release function 實現,所以每個按鈕(具有定義的顏色)在釋放后都會恢復到原來的顏色。
下面你會在 python 和 kivy 中找到部分代碼。
Python:
class PrButton(GridLayout):
def __init__(self, **kwargs):
super(PrButton, self).__init__(**kwargs)
self.build_grid()
def build_grid(self):
for i in hi_cat():
btn = ButtonDD(text=i[0].upper())
btn.background_color = i[1]
self.ids[i[0]] = btn
self.add_widget(btn)
kivy 檔案:
<ButtonDD>
bold: True
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
KV = """
<MainWidget>:
size : root.size
"""
class MainWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
for i in range(5):
btn = Button(text = str(i))
btn.bind(on_release = lambda i=i:self.clicked(i))
self.add_widget(btn)
def clicked(self,text):
print(text)
class MainApp(MDApp):
def build(self):
Builder.load_string(KV)
return MainWidget()
MainApp().run()
通過將lambda x: self.clicked()
lambda i=i:self.clicked()
來實現
我已經被這種問題困擾了一段時間了。 但我最近得到了答案。 所以我希望這對你有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.