#python #if-statement #tkinter #spinbox
#питон #if-оператор #tkinter #spinbox
Вопрос:
Доброе утро/Вечер,
Я хочу прочитать число из spinbox, и если оно равно 2, оно должно что-то напечатать. Но мой код не работает. Я пробовал это с помощью слайдера вместо вращающегося ящика, и это сработало. Но для меня действительно важно использовать spinbox, поэтому я надеюсь, что у кого-нибудь есть идея.
Код:
from tkinter import *
def a():
if spin.get()==2:
print("Hello World")
root = Tk()
root.geometry('300x100')
spin =Spinbox(root, from_=0, to=10,command=a)
button = Button(root, text='Enter')
button.pack(side=RIGHT)
spin.pack(side=RIGHT)
root.mainloop()
Ответ №1:
В дополнение к ответу @coolCloud я бы предложил установить текстовую переменную для spinBox. Так что, если пользователь изменит его, используя запись. Он будет автоматически обновлен.
Что-то вроде этого:
from tkinter import *
def a(*event):
if text.get()=='2':
print("Hello World")
root = Tk()
root.geometry('300x100')
text = StringVar()
text.trace('w', a) # or give command=a in the button if you want it to call the event handler only when the button is pressed
spin =Spinbox(root, from_=0, to=10, textvariable=text)
button = Button(root, text='Enter')
button.pack(side=RIGHT)
spin.pack(side=RIGHT)
root.mainloop()
Комментарии:
1. Зачем определять
*event
как параметр? Это может сбить новичков с толку. Я бы просто придерживался,*args
поскольку это тоже обычное дело.2. @CoolCloud Я использовал его, когда тестировал код. Забыл его изменить, к тому же это не имело бы большого значения.