1 回答

TA貢獻1836條經驗 獲得超3個贊
當您單擊按鈕時,它會使用一些信息執行您的函數。在不同的 GUI 中它可以使用不同的信息。在某些 GUI 中,它可以是有關事件的信息,在其他 GUI 中,它可以是有關小部件的信息,等等。
Kivy發送有關單擊的小部件的信息,您必須接收它
def sss(self, widget):
如果您想更改現有Button按鈕,則不要創建新按鈕 - 如果您將其分配給同一變量,則不會更改現有按鈕。您必須刪除舊按鈕并使用添加新按鈕add_widget()
您已有按鈕,self.Rc1因此您可以執行以下操作
def sss(self, widget):
self.Rc1.text = "Push Me !"
self.Rc1.font_size = "20sp"
self.Rc1.background_color = [1, 0, 0, 1]
self.Rc1.color = (1, 1, 1, 1)
self.Rc1.size = (32, 32)
self.Rc1.size_hint = (.2, .2)
self.Rc1.pos = (300, 250)
但更有趣的是,你也可以得到這個小部件sss(self, widget):,你可以做
def change_button(self, widget):
widget.text = "Push Me !"
widget.font_size = "20sp"
widget.background_color = [1, 0, 0, 1]
widget.color = (1, 1, 1, 1)
widget.size = (32, 32)
widget.size_hint = (.2, .2)
widget.pos = (300, 250)
這樣您就可以通過不同的按鈕使用相同的功能
import kivy
from kivy.uix.widget import Widget
from kivy.app import App
from kivy.uix.button import Button
class Touch(Widget):
def __init__(self, **kwargs):
super(Touch, self).__init__(**kwargs)
#self.all_buttons = []
for row in range(10):
for col in range(10):
x = col * 100
y = row * 100
button = Button(text=f"{row},{col}", pos = (x, y))
button.bind(on_press=self.change_button)
self.add_widget(button)
#self.all_buttons.append(button)
def change_button(self, widget):
if widget.background_color == [1,1,1,1]:
widget.background_color = [1, 0, 0, 1]
else:
widget.background_color = [1, 1, 1, 1]
class MyApp(App):
def build(self):
return Touch()
if __name__ == "__main__":
MyApp().run()
添加回答
舉報