2016-08-11 2 views
0
from tkinter import * 

class MainBattle(Frame): 
    def __init__(self, parent): 
     Frame.__init__(self, parent) 
     self.parent = parent   
     self.initUI() 
    def initUI(self): 
     global canvas 
     self.parent.title('Python') 
     self.pack(fill = BOTH, expand = 1) 
     canvas = Canvas(self) 
     self.Label_My = Label(self, text = 'MyObject') 


     self.Label_My.place(x = 470, y = 35) 
     canvas.pack(fill = BOTH, expand = 1) 
     canvas.update() 
    def aa(self): 
     self.Label_My['text'] = 'HisObject' 

def Change(): 
    Label_My['text'] = 'HisObject' 

root = Tk() 
ex = MainBattle(root) 
root.geometry('700x500') 

devrait utiliser la méthode globale? Je voudrais défind étiquettes à l'intérieur de la classe et changer son texte en dehors de la classe si possible.Modifier le texte de la toile tkinter en dehors de la classe

Répondre

2

Vous n'avez pas besoin de variables globales. Vous avez une référence à l'instance, qui vous permet d'accéder à toutes les variables d'instance:

ex.Label_My["text"] = "HisObject" 
+0

C'est plus pratique que d'utiliser la méthode globale. Mais merci à tous les deux de m'aider :) – Montague27

1

Si votre question est "puis-je utiliser global pour définir des valeurs de variables en dehors de la classe" alors oui. Chaque fois que vous voulez modifier la valeur d'une variable globale, vous devez écrire global.

def changetext(): 
    global label_text 
    label_text = "new text"