如何获得使用定义之外的变量的权限?

问题描述 投票:0回答:1

我无法在hold_x变量中使用hold_yfold_xfold_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)
python variables tkinter position definition
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>。我在Google中查看了此错误提示,但找不到任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.