Я хочу получить переменную из функции, чтобы использовать эту переменную в другой функции. Простой пример:
from tkinter import *
def test():
intro = "I am "
name = "Phil"
text = intro + name
def printresult():
print(text)
root = Tk()
root.title("Test")
testbutton = Button(root, text = "Test", command = test)
printbutton = Button(root, text = "print Test", command = printresult)
testbutton.grid(row = 1, column = 0)
printbutton.grid(row = 1, column = 1)
mainloop()
Если я нажму testbutton
, а затем printbutton
, я получаю сообщение об ошибке «имя« текст »не определено».
Итак, как я могу получить переменную text
из def test()
, чтобы использовать ее в def printresult()
?
Вам нужно сохранить значение в известном месте:
from tkinter import *
def test():
intro = "I am "
name = "Phil"
text = intro + name
test.text = text # save the variable on the function itself
def printresult():
print(test.text)
root = Tk()
root.title("Test")
testbutton = Button(root, text = "Test", command = test)
printbutton = Button(root, text = "print Test", command = printresult)
testbutton.grid(row = 1, column = 0)
printbutton.grid(row = 1, column = 1)
mainloop()
Поскольку вы используете tkinter, я бы использовал StringVar
для сохранения результата. Использование строки var позволяет другим виджетам tkinter использовать это значение.
from tkinter import *
def test():
intro = "I am "
name = "Phil"
text.set(intro + name)
def printresult():
print(text.get())
root = Tk()
root.title("Test")
text = StringVar()
testbutton = Button(root, text = "Test", command = test)
printbutton = Button(root, text = "print Test", command = printresult)
testbutton.grid(row = 1, column = 0)
printbutton.grid(row = 1, column = 1)
mainloop()