Как получить значение tkinter Spinbox? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь сделать таймер на python Tkinter. Чтобы установить таймер, я использую спинбоксы. Но у меня возникают проблемы с преобразованием значений моих спинбоксов в переменные time_h, time_m и time_s.

Я пробовал .get(), но он не работает. Когда я попытался напечатать переменные, я получил NameError: name 'spin_h' is not defined.

from tkinter import * 
window = Tk()
window.title("Timer")
window.geometry('350x200')
hour = 0
minute = 0
second = 0
timer = (str(hour) + ':' + str(minute) + ':' + str(second))
lbl = Label(window, text=timer, font=("Arial Bold", 50))
hour_s = 0
min_s = 0
sec_s = 0
def save_time():
    time_h = spin_h.get()
    time_m = spin_m.get()
    time_s = spin_s.get()

def new_window():
    set_time = Tk()
    spin_h = Spinbox(set_time, from_=0, to=10, width=5)
    spin_h.grid(column=1,row=0)
    spin_m = Spinbox(set_time, from_=0, to=60, width=5)
    spin_m.grid(column=3,row=0)
    spin_s = Spinbox(set_time, from_=0, to=60, width=5)
    spin_s.grid(column=5,row=0)
    h_label = Label(set_time, text='h', font=("Arial Bold", 10))
    h_label.grid(column=2, row=0)
    m_label = Label(set_time, text='m', font=("Arial Bold", 10))
    m_label.grid(column=4, row=0)
    s_label = Label(set_time, text='s', font=("Arial Bold", 10))
    s_label.grid(column=6, row=0)
    set_button = Button(set_time, text="Set Time", command=save_time)
    set_button.grid(column=3, row=2)



btn = Button(window, text="Set Time", command=new_window)
btn.grid(column=3, row=2)
lbl.grid(column=3, row=0)
window.mainloop()

1 Ответ

0 голосов
/ 08 января 2020

spin_h является локальной переменной для функции new_window() и не может быть доступна функцией save_time (). Вы можете объявить это глобальной переменной в начале new_window(), чтобы это исправить. - #Martineau (просто превратил это в ответ вместо комментария).

Спасибо Martineau

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...