Python: считывание чисел из спинового блока и выполнение следующей команды из одного

#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 Я использовал его, когда тестировал код. Забыл его изменить, к тому же это не имело бы большого значения.