1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
當(dāng)您單擊按鈕時(shí),它會(huì)使用一些信息執(zhí)行您的函數(shù)。在不同的 GUI 中它可以使用不同的信息。在某些 GUI 中,它可以是有關(guān)事件的信息,在其他 GUI 中,它可以是有關(guān)小部件的信息,等等。
Kivy發(fā)送有關(guān)單擊的小部件的信息,您必須接收它
def sss(self, widget):
如果您想更改現(xiàn)有Button按鈕,則不要?jiǎng)?chuàng)建新按鈕 - 如果您將其分配給同一變量,則不會(huì)更改現(xiàn)有按鈕。您必須刪除舊按鈕并使用添加新按鈕add_widget()
您已有按鈕,self.Rc1因此您可以執(zhí)行以下操作
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)
但更有趣的是,你也可以得到這個(gè)小部件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()
添加回答
舉報(bào)