@MrTrek

Как получить данные с функции, при нажатии на кнопку?

Использую библиотеку tkinter. И хочу счесть данные с нажатия на кнопку в самой функции,но использовать ее в дальнейшем(за функцией) не получается,вот код:

from tkinter import *

root = Tk()
def btn_click():
Key = KeyInput.get() #Тут я считываю данные с нажатия на конпку


root.title('Skysmart')
root.geometry('300x250')

canvas = Canvas(root,height=300,width=250)
canvas.pack()
frame= Frame(root, bg='gray')
frame.place(relx=0.15,rely=0.15,relwidth=0.7,relheight=0.7)

KeyInput = Entry(frame, bg='white')
KeyInput.pack()
btn = Button(frame,text='Отправить',bg='yellow',command=btn_click)
btn.pack()
  • Вопрос задан
  • 690 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну для начала неплохо бы осознать, что понятие "за функцией" существует и в пространстве, и во времени.

В пространстве - ты описываешь в функции локальную переменную Key, которая не видна снаружи, в глобальной области видимости, а также не видна в других функциях. Если хочешь сохранить это значение глобально, объяви переменную снаружи функции, присвоив ей какое-то начальное значение (скажем, None), а внутри функции опиши переменную как global.

Во времени - весь приведенный тобой код, вплоть до вызова root.mainloop() (который ты не привёл), выполняется в самом начале работы скрипта - еще до того, как на экране появится окно. Чтобы код мог использовать значение, которое было получено в рамках btn_click(), нужно, чтобы этот код выполнялся гарантированно после btn_click() или же внутри btn_click(), но после получения значения Key. Как это гарантировать - подумай сам. Либо обяжи пользователя нажимать на кнопки в строго определнном порядке, либо привяжи исполнение кода к вызову btn_click().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы