为了账号安全,请及时绑定邮箱和手机立即绑定

如何在kivy中更改gridLayout中特定按钮的颜色

如何在kivy中更改gridLayout中特定按钮的颜色

GCT1015 2023-06-06 16:11:27
我正在尝试用 Python 和 Kivy 制作 tambola 硬币拾取器,我是 kivy 的新手。在这里,我创建了从 1 到 90 的网格布局按钮。我想在选择数字时更改网格布局中特定按钮的颜色。我在使用新的彩色按钮更新网格布局时遇到问题。#!/usr/bin/pythonfrom kivy.app import Appfrom kivy.uix.button import Buttonfrom kivy.uix.label import Labelfrom kivy.uix.floatlayout import FloatLayoutfrom kivy.uix.gridlayout import GridLayout from kivy.graphics import Colorimport randomcoins = random.sample(range(1,91), 90)#print(coins)picked_coins=[]current_coin=0#print(picked_coins)class Housie(FloatLayout):    def __init__(self,**kwargs):        super(Housie,self).__init__(**kwargs)        self.title = Label(text="Housie Coin Picker",font_size = 50,size_hint=(1, .55),pos_hint={'x':0, 'y':.45})        self.main_label = Label(text = "Click PICK NUMBER", size_hint=(1, .60),pos_hint={'x':0, 'y':.35})        self.picked_ones = Label(text = "picked_coins", size_hint=(1, .40),pos_hint={'x':0, 'y':.40})        self.help_button = Button(text = "PICK NUMBER", size_hint=(.3, .1),pos_hint={'x':.65, 'y':.1},on_press = self.update)        self.add_widget(self.title)        self.add_widget(self.main_label)        self.add_widget(self.picked_ones)        self.add_widget(self.help_button)        self.add_widget(self.userinterface())    def userinterface(self):        self.layout = GridLayout(cols = 10,size_hint=(.50, .50))        for i in range(1,91):            self.layout.add_widget(Button(background_color=(1,0,0,1),text =str(i)))        return self.layout    def update(self,event):        for coin in coins:            if coin not in picked_coins:                current_coin=coin                picked_coins.append(coin)                self.main_label.text = str(coin)                for i in self.layout.children:                    if i.text == str(coin):                     #What to do Here?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您可以Button像这样将一个方法绑定到每个方法:


def userinterface(self):

    self.layout = GridLayout(cols = 10,size_hint=(.50, .50))

    for i in range(1,91):

        self.layout.add_widget(Button(background_color=(1,0,0,1),text=str(i), on_release=self.butt_pressed))

    return self.layout


def butt_pressed(self, button):

    button.background_normal = ''

    button.background_color = (1,0,0,1)

Thbutt_pressed()方法更改了 pessed 的背景颜色Button。


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信