#python #kivy #kivy-language
#питон #kivy #kivy-язык
Вопрос:
Я хочу изменить текст кнопки на другом экране, но я не использую язык kv, как я могу это сделать? Вот пример кода
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
list=['Yes','No']
class ScreenManagement(ScreenManager):
def __init__(self, **kwargs):
super(ScreenManagement, self).__init__(**kwargs)
class Iniciar(Screen):
def __init__(self, **kwargs):
super(Iniciar, self).__init__(**kwargs)
self.btn = Button(text='INICIAR', size_hint=(.2, .1), pos_hint={'center_x': .5, 'y': .05}, background_color=(0, 0, 1.60, 1),font_size=24, color=(.8, .9, 0, 1))
self.btn.bind(on_press=self.press_button)
self.add_widget(self.btn)
def press_button(self, *args):
list[0] = 'Apple'
list[1] = 'Banana'
self.manager.current = 'categorical'
class Categorical(Screen):
def __init__(self, **kwargs):
super(Categorical, self).__init__(**kwargs)
self.button_1 = Button(text=list[0], size_hint=(.2, .1), pos_hint={'center_x': .35, 'y': .05})
self.button_2 = Button(text=list[1], size_hint=(.2, .1), pos_hint={'center_x': .64, 'y': .05})
self.add_widget(self.button_1)
self.add_widget(self.button_2)
class Application(App):
def build(self):
sm = ScreenManagement(transition=FadeTransition())
sm.add_widget(Iniciar(name='iniciar'))
sm.add_widget(Categorical(name='categorical'))
return sm
if __name__ == "__main__":
Application().run()
В этом случае я изменяю список, содержащий значения текстов кнопок
Ответ №1:
Вам не нужно использовать list для этого. Один из простых способов сделать это — присвоить виджету кнопки переменную и использовать button.text
. Как и в вашем коде, вы присвоили виджету кнопки переменную с именем self.button_1
and self.button_2
. Итак, чтобы изменить текст button_1, просто сделайте self.button_1.text = 'new'
то же самое для button_2, self.button_2.text='new2'
Ответ №2:
self.manager.get_screen('ScreenWithButton').ids['buttonid'].text = ""