【问题标题】:how to Change colour of a particular button in gridLayout in kivy如何在kivy的gridLayout中更改特定按钮的颜色
【发布时间】:2020-08-19 05:44:19
【问题描述】:

我正在尝试用 Python 和 Kivy 制作 tambola 硬币选择器,我是 kivy 的新手。 在这里,我创建了从 1 到 90 的 gridlayout 按钮。我想在选择其编号时更改 gridlayout 中特定按钮的颜色。我面临使用新的彩色按钮更新网格布局的问题。在这里我附上我的代码。 screenshot

#!/usr/bin/python
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout 
from kivy.graphics import Color
import random
coins = 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?
                break
        self.picked_ones.text = "Picked coins = {}".format(" ".join(str(sorted(picked_coins))))
class app1(App):
    def build(self):
        return Housie()
if __name__=="__main__":
     app1().run()

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    您可以像这样将一个方法绑定到每个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)
    

    butt_pressed() 方法改变了 pessed Button 的背景颜色。

    【讨论】:

      猜你喜欢
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2013-12-09
      相关资源
      最近更新 更多