2016-12-12 3 views
0

Я пытаюсь получить доступ к записи внутри функции из другой функции. Но это говорит мне, что это не определено. Я много разбираюсь, но я не могу найти ничего, что помогло бы мне.Python: доступ к функции из другой функции

Это мой код, я сокращал его, чтобы вам было легче. Хотя этого должно быть достаточно, чтобы дать вам эту идею.

from tkinter import* 

class hunterClass: 

    def BMHunter(): 
     hunter = Tk() 
     hunter.title("Beast Mastery Gear Worth Calculator") 

     agiString = StringVar() 

     agiText = Label(hunter, text = "Input points of agility:").grid(row = 3, column = 0) 
     agiEntry = Entry(hunter, textvariable = agiString).grid(row = 3, column = 1) 

     calculate = Button(hunter, text = "Calculate", command = hunterClass.calculateFun).grid(row = 12, column = 1) 

    def calculateFun(): 
     agiF = float(agiEntry.get()) 

window = Tk() 
window.title("Gear Worth Calculator") 

hunterText = Label(window, text = "Hunter").grid(row = 3, column = 0) 
hunterBM = Button(window, text = "Beast Mastery", width = 12, command = hunterClass.BMHunter).grid(row = 4, column = 0) 
+0

Пожалуйста, узнайте, как спросить хороший вопрос: http://stackoverflow.com/help/how-to-ask –

+0

Было бы здорово пояснить, какая переменная не была объявлена. Но в конце я уверен, что вы можете решить этот вопрос, используя глобальное ключевое слово. –

+0

Этот пример может быть полезен: https://docs.python.org/3.5/tutorial/classes.html#scopes-and-namespaces-example –

ответ

0

вам нужен другой отступ в def BMHunter определить calculateFun

Я предполагаю, что вы пытаетесь использовать замыкания в Python:

https://www.programiz.com/python-programming/closure

Так

def BMHunter(): 
    .... 
    def calculateFun() 

Ваш текущий код есть tak ING calculateFun быть другая функция того же класса, а не локальная функция внутри BMHunter

Я также рекомендую определения функции, как Def BMHunter(self), если вы сознательно не хотите, чтобы сделать его статический/метод класса

+0

Спасибо за помощь, я обнаружил, что переменные globals работают. – Healscreamer

Смежные вопросы