Как получить значение Int из spinbox для создания новых записей

#python-3.x #tkinter #integer #spinbox

#python-3.x #tkinter #целое число #spinbox

Вопрос:

  • Я создал простой spin box. я хочу, чтобы при увеличении или уменьшении значения в spin box новая запись создавалась или удалялась соответственно.
  • Я не могу получить значение Int из spinbox.
  • Я попытался, user_input = int(sb.get()), Но это также не сработало.
  • Я получаю эту ошибку, объект ‘str’ не может быть интерпретирован как целое число.

,,,

1-й код:

 from tkinter import *
root = Tk()

sb_var = IntVar()
sb = Spinbox(root, bg='gray', textvariable=sb_var)
sb.pack()
user_input = sb.get()

for x in range(user_input):
    my_entry = Entry(root)
    my_entry.pack()

root.mainloop()
 

,,,

2-й код:

 from tkinter import *
root = Tk()
root.geometry("500x400")


def up_or_down(direction):
    if direction == "up":
        my_entry = Entry(root)
        my_entry.pack()

    if direction == "down":         # I don't know how to code this condition
        my_entry.destroy()

tcl_up_or_down = root.register(up_or_down)

sb = Spinbox(root, from_=0, to=100, bg='gray', command=(tcl_up_or_down, '%d'))
sb.pack()

root.mainloop()
 

»’

Комментарии:

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

2. Спасибо за ответ, Брайан, но почему мой виджет ввода не отображается в графическом интерфейсе?

3. Потому mainloop что не запустился до запуска этого кода.

4. Хорошо, если это проблема, то каково решение?

5. Решение трудно сказать, поскольку оно зависит от того, что вы пытаетесь выполнить. Короче говоря, переместите код в функцию, а затем вызовите функцию после того, как пользователь изменил spinbox.