如果第一个函数没有被第二个函数触发,是否有可能从一个函数中取出一个变量,放入另一个函数中?

is it possible to get a variable out of a function, into another function, if the first one doesn't trigger by the second one?

def NewNote(x, y):
    print("something")
    text = input()
    return (text)

def Delete(x, y):
    text = GetText()
    pen.write(text, align="left", font=("arial", TextSize))
    print(text)

**text = BlackSquare.onrelease(NewNote)**
**text = VerLine.onrelease(NewNote)**
**text = HorzLine.onrelease(NewNote)**
color = turtle.onscreenclick(settings)
WhiteeraserSquare.onrelease(Delete)
BlackeraserSquare.onrelease(Delete)

def GetText():
    textA = text
    return textA

< 所以基本上 NewNote 函数由一个带星号的触发器触发,从用户那里获取输入,然后我想从那里获取删除函数的输入。所以我试着 return 它到触发器,再次将它保存为一个变量,而不是将它放入另一个函数,然后将它发送回 删除函数,但我显然不明白整个 return 是如何工作的,因为删除函数 keeps 打印“none”。

(我正在使用 Turtle 图形模块,所以..触发器和 pen.write 来自那里)。

ps: 第一次在stack overflow提问,如有不妥还望见谅

您误解了 turtle 事件处理程序,需要(重新)阅读它们:

def NewNote(x, y):
    print("something")
    text = input()
    return (text)

text = BlackSquare.onrelease(NewNote)

onrelease() 方法不会 return 任何东西 (returns None) 因此将其结果分配给 text 变量什么也不做。

NewNote() 事件处理程序的调用者不关心其 return 值,因此 return (text) 基本上被忽略。

这里有一个简单的例子,希望能帮助你理解这些函数的使用方法。它放置了两个乌龟按钮,一个绿色和红色的正方形。单击绿色的,它会提示您在屏幕中央输入和书写。单击红色的,它将删除该文本:

from turtle import Screen, Turtle

def delete_text(x, y):
    pen.clear()

def write_text(x, y):
    text = screen.textinput("Text Input", "Enter some text")
    pen.clear()
    pen.write(text, align='center', font=('Arial', 18, 'bold'))

screen = Screen()

write = Turtle()
write.shape('square')
write.color('green')
write.penup()
write.onrelease(write_text)
write.backward(200)

erase = Turtle()
erase.shape('square')
erase.color('red')
erase.penup()
erase.onrelease(delete_text)
erase.forward(200)

pen = Turtle()
pen.hideturtle()

screen.mainloop()

要在 write_text()delete_text() 之间传递信息,需要某种全局实体来传递此信息。它可以像全局变量一样简单,也可以像通过 lambda 表达式作为额外参数传递给处理程序的对象一样更复杂。