Как зарегистрировать значения в ttk.Spinbox через ввод с клавиатуры? - PullRequest
0 голосов
/ 27 сентября 2018

Может ли виджет ttk.Spinbox позволить пользователю вводить значения в поле ввода и регистрировать его?Если да, то как я могу это сделать?

Я знаю, что можно использовать метод .set() для ttk.Spinbox textvariable, чтобы изменить его значение.Но я не об этом думал.Вместо этого я просто хотел бы позволить пользователю щелкнуть на виджете ttk.Entry в ttk.Spinbox и вручную ввести значения там, чтобы он был зарегистрирован в textvariable.В настоящее время я могу ввести значения там, но ничего не происходит, когда я нажимаю клавишу Return.

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Может ли виджет ttk.Spinbox позволить пользователю вводить значения в поле ввода и регистрировать его?Если так, как я могу это сделать?

Если вы связываете переменную с атрибутом textvariable, вам больше ничего не нужно делать.Каждый раз, когда пользователь изменяет значение с помощью стрелок или путем ввода в редактируемую часть виджета, значение в переменной будет мгновенно обновляться.

Вы можете проверить это самостоятельно, создав спин-бокс и меткуоба связаны с одной и той же переменной.После этого вы сможете увидеть, что ярлык обновляется в реальном времени при редактировании spinbox.

Пример:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
spinvar = tk.IntVar()
spinbox = ttk.Spinbox(root, from_=0, to=100, textvariable=spinvar)
label = ttk.Label(root, textvariable=spinvar)
spinbox.pack()
label.pack()

root.mainloop()

В настоящее время я могу вводить значения там, но ничего не происходит, когда янажмите клавишу Return.

Если вы хотите, чтобы что-то происходило, когда пользователь нажимает клавишу <Return>, вам нужно добавить привязку для вызова функции.

Пример:

def do_something(event):
    print("do something:", spinvar.get())
spinbox.bind("<Return>", do_something)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...