Есть несколько вещей:
Обратите внимание на отступ кода. Этот код не работает без исправления. Мы проверяем это, вставляя его в IDLE (или другой), и запускаем его, чтобы увидеть, в чем дело.
Существует встроенная функция с именем sum
. Если вы дадите это имя своей функции, вы не сможете вызвать встроенную функцию sum
. Я переименовал его sum_array
.
Вы определяете функцию sum_array для приема трех аргументов, но вы вызываете из Button без аргументов:
def sum(box_list,box_list1,tot_sum_array):
sum1 = Button(Array, text='sum', command=sum)
Поскольку все аргументы были в глобальном пространстве имен, я просто удалил их из функции Defenition.
Каждый раз, когда вы нажимаете на любую из кнопок «отправить», вы создаете новый массив, который добавляется к соответствующим массивам, box_list
и box_list1
, а также новые записи для этих элементов.
Вы пропустили использование .get()
в функции sum
:
suma=(int(box_list[j])+int(box_list1[j]))
должно быть:
suma = int(box_list[j].get())+int(box_list1[j].get())
Предполагается, что вы хотите, чтобы элемент за элементом перечислял сумма, я изменил функцию sum
, чтобы напечатать это.
Я не совсем уверен насчет функции кнопки «Отправить в массив», поскольку программа считывает записи только при подсчете суммы.
Вы хотели бы, чтобы это работало:
from tkinter import *
root = Tk()
def ApplytoLabel():
xx = size.get()
for i in range(xx):
element = box_list[i].get() # Get value from corresponding Entry
ArrayLabel = Label(root, text="Array1 Element "+element)
box_list.append(element)
ArrayLabel.pack()
for i in range(xx):
element = box_list1[i].get() # Get value from corresponding Entry
ArrayLabel = Label(root, text="Array2 Element "+element)
box_list1.append(element)
ArrayLabel.pack()
box_list = [] # Create list of Entrys
def Boxes():
xx = size.get()
for i in range(xx):
box = Entry(root)
box_list.append(box)
box.pack()
# Append current Entry to list
ApplytoLabel1 = Button(root, text="Submit To Array", command=ApplytoLabel)
ApplytoLabel1.pack()
box_list1 = []
def Boxes1():
xx = size.get()
for i in range(xx):
box = Entry(root)
box_list1.append(box) # Append current Entry to list
box.pack()
ApplytoLabel1 = Button(root, text="Submit To Array", command=ApplytoLabel)
ApplytoLabel1.pack()
tot_sum_array = []
def sum_array(): # Changed name from "sum", removed argument list
xx = size.get()
sum2 = Label(root, text='result'%tot_sum_array).pack()
for j in range(xx):
# Added ".get()" to the calculation
suma = int(box_list[j].get())+int(box_list1[j].get())
tot_sum_array.append(suma)
Label(root, text=str(suma)).pack()
Array = Frame(root, bg='thistle')
Array.pack(padx=10, pady=10)
text1 = Label(Array, text="Enter the Size of Array:", font="Arial 10 bold", fg="blue")
text1.grid(row=0, column=0, sticky="w")
size = IntVar()
ArraySize = Entry(Array, textvariable=size)
ArraySize.grid(row=0, column=1, sticky="w")
SizeofArray = Button(Array, text="Submit", command=Boxes)
SizeofArray.grid(row=0, column=2, sticky="w")
SizeofArray = Button(Array, text="Submit1", command=Boxes1)
SizeofArray.grid(row=0, column=3, sticky="w")
sum1 = Button(Array, text='sum', command=sum_array)
sum1.grid(row=0, column=4, sticky="w")
root.mainloop()