Bonjour,
Merci d'avance à tous ceux qui se pencherons sur mon soucis (incompétence).
J'ai un programme en Python/Kivy avec fichier kv. J'ai une class 'AdjustmentScreen(Screen)' qui a une fonction changeText(self) et je souhaite utiliser cette fonction depuis une autre class Settings(). Pour l'instant je ne suis arrivé à rien. Voilà le dernier essai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
sm = ScreenManager()
sm.add_widget(AdjustmentScreen(name='Adjustment'))
 
class Settings():
    path=StringProperty()
    .......
 
    def readFileMes(self,filename):
        ...........
        App.get_running_app().Adj.changeText() #cet appel fonctionne mais ...
 
class AdjustmentScreen(Screen):
    def __init__(self, **kwargs):
        super(AdjustmentScreen, self).__init__(**kwargs)
 
    def changeText(self):   #j'arrive bien ici mais je ne connais pas 'self'
        print(sm.has_screen('Adjustment')) #True
        print('test change text')
        print(self)   #<Screen name=''>    donc je n'ai pas de lien avec l'objet
        # mon problème dans ce cas c'est que le 'self' ne représente pas le screen et donc je ne peux rien modifier
        self.inputLg.text='test'  #self non connu, ids idem si je l'utilise, bref la bouteille à encre :roll:
        ...........
 
class HelpSelectKVApp(App):
    Adj=AdjustmentScreen()
    def build(self):
        .............
        return sm
Voilà j'espère ne pas avoir été trop brumeux, et en fin de compte j'aimerais modifier des labels et boutons de AdjustmentScreen depuis une autre la class Settings avec une fonction de AdjustmentScreen
Merci d'avance pour toutes suggestions.