0

我不能在变量中使用hold_x,hold_yfold_x, 。你知道如何解决这个问题吗?fold_ytav

我已经尝试过hold_mozgat(0,0).hold_xhold_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)
4

1 回答 1

1

我试过这个:

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>。我在谷歌中查看了这个错误核心,但我找不到任何东西。

于 2020-05-07T09:12:05.750 回答