Reputation: 1484
This is just a smaller part of my application.
I have a button "Hi".
I have 2 more buttons "1" and "2" in gridlayout and id is w_10
On pressing "Hi", w_10 will becomes disabled.
Now, i dont want "1" and "2" to change color after w_10 is disabled, i want to stay them same as past state ie green color. Please improve my code.
My code:
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
Builder.load_string("""
<MenuScreen>:
GridLayout:
cols: 1
Button:
text: 'HI'
on_press: root.change()
GridLayout:
id: w_10
rows:1
Button:
text: '1'
background_normal: ''
background_color:(0.207, 0.635, 0.423, 0.9)
Button:
text:'2'
background_normal: ''
background_color:(0.207, 0.635, 0.423, 0.9)
""")
# Declare both screens
class MenuScreen(Screen):
def change(self):
self.ids['w_10'].disabled=True
sm = ScreenManager()
menu = MenuScreen(name='menu')
sm.add_widget(menu)
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
Upvotes: 3
Views: 4158
Reputation: 8747
Set background_disabled_normal
property of yout buttons to an emtpy string:
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
Builder.load_string("""
<MenuScreen>:
GridLayout:
cols: 1
Button:
text: 'HI'
on_press: root.change()
GridLayout:
id: w_10
rows:1
Button:
background_disabled_normal: ''
text: '1'
background_normal: ''
background_color:(0.207, 0.635, 0.423, 0.9)
Button:
background_disabled_normal: ''
text:'2'
background_normal: ''
background_color:(0.207, 0.635, 0.423, 0.9)
""")
# Declare both screens
class MenuScreen(Screen):
def change(self):
self.ids['w_10'].disabled = True
sm = ScreenManager()
menu = MenuScreen(name='menu')
sm.add_widget(menu)
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
If you want to have text color unchanged as well use also disabled_color
propertry:
Button:
background_disabled_normal: ''
disabled_color: 1, 1, 1, 1
text: '1'
background_normal: ''
background_color:(0.207, 0.635, 0.423, 0.9)
Upvotes: 2