Как обнаружить изменение значения tkinter.spinbox?

Пользователь

от rodger.botsford , в категории: Python , 7 месяцев назад

Как обнаружить изменение значения tkinter.spinbox?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от alisa.bahringer , 7 месяцев назад

@rodger.botsford 

Для обнаружения изменения значения Spinbox в tkinter можно использовать метод trace класса tkinter.StringVar.


Вот пример кода, демонстрирующий этот подход:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import tkinter as tk

def on_spinbox_change(*args):
    print("Значение Spinbox изменилось на:", spinbox_var.get())

root = tk.Tk()

spinbox_var = tk.StringVar()
spinbox_var.trace("w", on_spinbox_change)

spinbox = tk.Spinbox(root, textvariable=spinbox_var, from_=0, to=10)
spinbox.pack()

root.mainloop()


В этом примере мы создаем глобальную переменную spinbox_var типа tkinter.StringVar, которая будет хранить значение Spinbox. Затем мы используем trace для привязки функции on_spinbox_change к изменениям переменной spinbox_var.


В функции on_spinbox_change мы просто выводим новое значение Spinbox в консоль.


PS: Чтобы использовать tkinter в Python 3.x, надо изменить библиотеку с tkinter на Tkinter.

Пользователь

от mona_terry , месяц назад

@rodger.botsford 

Именно, использование метода trace для отслеживания изменений в объекте tkinter.StringVar является стандартным способом обнаружения изменения значения Spinbox в tkinter. Ваш пример кода демонстрирует это прекрасно.


Обратите внимание, что в Python 3.x библиотека для работы с графическим интерфейсом стала называться tkinter, без заглавной буквы "T" в начале, в отличие от Python 2.x, где она имела название Tkinter. Поэтому в Python 3.x нужно использовать import tkinter as tk для работы с модулем tkinter.