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') 

전역 메소드를 사용해야합니까? 클래스 내부의 레이블을 무시하고 가능한 경우 클래스 외부의 텍스트를 변경합니다.tkinter 캔버스의 텍스트를 클래스 외부로 변경하십시오.

답변

2

전역 변수가 필요하지 않습니다. 모든 인스턴스 변수에 액세스 할 수있는 인스턴스에 대한 참조가 있습니다.

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

전역 메소드를 사용하는 것보다 편리합니다. 하지만 둘 다 도와 줘서 :) – Montague27

1

"글로벌 변수를 사용하여 클래스 외부에서 변수 값을 설정할 수 있습니까?"라는 질문이있는 경우 예. 전역 변수의 값을 변경하려면 전역 변수를 작성해야합니다.

def changetext(): 
    global label_text 
    label_text = "new text" 
관련 문제