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()
添加回答
举报