Tkinter - не могу понять, почему данные вводятся одновременно в 2 поля ввода - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок в Tkinter и в настоящее время пишу код для отображения суммы 2 чисел в третьем текстовом поле. Но когда я набираю целочисленное значение в текстовом поле 1, оно одновременно вводит то же значение и в текстовом поле 2. По-видимому, оба они хранятся в одной переменной. Код здесь:

def showSum(fnum,lnum):
try:
    some_var = int(fnum)
except ValueError:
    print("Error. Not an integer number!")
try:
    some_var = int(lnum)
except ValueError:
    print("Error. Not an integer number!")
sum = fnum+lnum
sum_label['text'] = str(sum)


FirstNumLabel = Label(tkWindow, text="Enter Num 1: ").grid(row=0, column=0)
FirstNum = 0
FirstNumEntry = Entry(tkWindow, textvariable=FirstNum).grid(row=0, column=1)

LastNumLabel = Label(tkWindow, text="Enter Num 2: ").grid(row=1, column=0)
LastNum = 0
LastNumEntry = Entry(tkWindow, textvariable=LastNum).grid(row=1, column=1)

showSum = partial(showSum, FirstNum, LastNum)
showButton = Button(tkWindow, text="Show", command=showSum).grid(row=3, column=1)

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

Кроме того, функция суммы отображает 0 как сумму вышеуказанных целых чисел.

Я пытался найти его в Google, но не нашел решения. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 25 апреля 2020

Опция textvariable должна использовать одну из специальных переменных tkinter StringVar, IntVar, BooleanVar или DoubleVar. StingVar является наиболее распространенным.

Поскольку вы используете целое число, оба виджета ввода имеют textvariable, установленное на 0. Это создает внутреннюю переменную с именем 0, которая обновляется при изменении значения виджета. Поскольку они имеют одну и ту же внутреннюю переменную, они оба имеют одинаковое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...