Текстовое поле Tkinter, возвращающее переменную - PullRequest
0 голосов
/ 03 февраля 2012

Это должно быть очень очень просто, но как мне получить следующий базовый код для вывода введенной переменной, чтобы я мог передать ее остальной части программы.

from Tkinter import *
root = Tk()

InputStrings = StringVar()
Entry(root, textvariable=InputStrings).pack()

def GetString():
    print InputStrings.get()
    Button(root, text='Print', command=OutputText).pack()
    root.mainloop()

def OutputText():
    OutString=InputStrings.get()
    print OutString
    root.withdraw()
    root.quit()

GetString()
print OutString

Когда я добавляюOutString в def дает другие ошибки.Действительно ли мне нужен модуль OutputText - он не может быть просто возвращен из модуля GetString?

1 Ответ

2 голосов
/ 03 февраля 2012

Это проблема объема!Обратите внимание, что когда вы присваиваете OutString, вы делаете это в функции.Ну, Python думает, что вы хотите новую переменную в этой функции.Но потом, в области действия модуля, после того, как ваш вызов GetString() закончен, вы пытаетесь напечатать OutString.Сюрприз!Его не существует.

Это потому, что вы забыли добавить его в глобальную область.Чтобы убедиться, что переменная, которую вы назначаете, назначена глобальной, а не локальной области действия, используйте оператор global .Вот так:

def OutputText():
    # Declare that OutString will be global
    global OutString
    OutString = InputStrings.get()
    ...

GetString()
print OutString
# It prints! Twice, actually, because you also printed it from OutputText()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...