как получить доступ к использованию переменных вне определения? - PullRequest
0 голосов
/ 06 мая 2020

Я не могу использовать hold_x, hold_y и fold_x, fold_y в переменной tav. Вы знаете, как решить эту проблему?

Я пробовал hold_mozgat(0,0).hold_x и hold_mozgat(0,0).hold_y безуспешно.


def hold_mozgat(v, h):
    global x1, y1
    x1, y1 = x1 + v, y1 + h
    can1.coords(hold, x1, y1, x1 + 90, y1 + 90)
    global hold_x, hold_y
    hold_x, hold_y = x1 + 50, y1 + 50
    print('A Hold szélessége : ' + str(x1 + 50) + ' Hosszúsága : ' + str(y1 + 50))
    return hold_x, hold_y


def fold_mozgat(v, h):
    global a1, b1
    a1, b1 = a1 + v, b1 + h
    can1.coords(fold, a1, b1, a1 + 200, b1 + 200)
    global fold_x, fold_y
    fold_x, fold_y = a1 + 100, b1 + 100
    print('A Föld szélessége : ' + str(a1 + 100) + ' Hosszúsága : ' + str(b1 + 100))
    return fold_x, fold_y


hx, hy = hold_mozgat.hold_x, hold_mozgat.hold_y
fx, fy = fold_mozgat.hold_x, fold_mozgat.fold_y

tav = int((sqrt(((fx - hx) ** 2) + ((fy - hy) ** 2))) - 150)

Label(keret, text='A Föld és Hold távolsága : ' + str(tav) + ' fényév', fg='red').pack(side=BOTTOM)

1 Ответ

1 голос
/ 07 мая 2020

Я пробовал это:

def hold_mozgat(v=0, h=0):
    global x1, y1
    x1, y1 = x1 + v, y1 + h
    can1.coords(hold, x1, y1, x1 + 90, y1 + 90)
    hold_mozgat.hold_x = x1 + 50
    hold_mozgat.hold_y = y1 + 50
    print('A Hold szélessége : ' + str(x1 + 50) + ' Hosszúsága : ' + str(y1 + 50))
    return hold_mozgat.hold_x, hold_mozgat.hold_y

def tavolsag():
    hold_mozgat()
    fold_mozgat()
    fx, fy = fold_mozgat.fold_x, fold_mozgat.fold_y
    hx, hy = hold_mozgat.hold_x, hold_mozgat.hold_y
    tavolsag.tav = int((sqrt(((fx - hx) ** 2) + ((fy - hy) ** 2))) - 150)
    return tavolsag.tav

Label(root, text='A Föld és Hold távolsága : ' + str(tavolsag.tav) + ' fényév', fg='red').pack(side=BOTTOM)

Я полагал, что если я дам значения по умолчанию для hold_mozgat(v,h):, это будет работать, но это не сработало. Программа работает, но на ней написано Cannot find reference 'fold_x' in function, а когда я запускаю программу, написано gui <function tavolsag at 0x037C66E8>. Я просмотрел это ядро ​​ошибки в Google, но ничего не нашел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...