How to put (and drag) multiple canvas items in one tag?

I have created 2 files that need to be put in 1 directory. One that should be named “Test” for the other to work properly:

import tkinter as tk
from tkinter import ttk

class D:
    def __init__(self, P1, P2, P3, P1C, P2C, P3C, LX, LY, SX, SY, LT, LO, LS):
        self.P1 = P1
        self.P2 = P2
        self.P3 = P3
        self.P1C = P1C
        self.P2C = P2C
        self.P3C = P3C
        self.LX = LX
        self.LY = LY
        self.SX = SX
        self.SY = SY
        self.LT = LT
        self.LO = LO
        self.LS = LS

    def Part1(Tag, CV, LX, LY, SX, SY, MC, LT, LO, LS):
        CV.create_polygon(((-20 * SX) + LX), ((00 * SY) + LY), ((00 * SX) + LX), ((20 * SY) + LY), ((20 * SX) + LX), ((00 * SY) + LY), ((00 * SX) + LX), ((-20 * SY) + LY), fill = MC, outline = LO, width = LT, smooth = LS, tags = Tag)

    def Part2(Tag, CV, LX, LY, SX, SY, MC, LT, LO, LS):
        CV.create_polygon(((-10 * SX) + LX), ((00 * SY) + LY), ((00 * SX) + LX), ((10 * SY) + LY), ((00 * SX) + LX), ((00 * SY) + LY), fill = MC, outline = LO, width = LT, smooth = LS, tags = Tag)

    def Part3(Tag, CV, LX, LY, SX, SY, MC, LT, LO, LS):
        CV.create_polygon(((10 * SX) + LX), ((00 * SY) + LY), ((00 * SX) + LX), ((-10 * SY) + LY), ((00 * SX) + LX), ((00 * SY) + LY), fill = MC, outline = LO, width = LT, smooth = LS, tags = Tag)
   
class C:
    def Test1(Tag, CV, P1, P2, P3, P1C, P2C, P3C, LX, LY, SX, SY, LT, LO, LS):
        P1(Tag, CV, LX, LY, SX, SY, P1C, LT, LO, LS)
        P2(Tag, CV, LX, LY, SX, SY, P2C, LT, LO, LS)
        P3(Tag, CV, LX, LY, SX, SY, P3C, LT, LO, LS)

And the aforementioned other thing, which will import the “Test” file:

import PySimpleGUI as sg
import re
from Test import C
from Test import D

sg.theme('DefaultNoMoreNagging')

items_files = [  [sg.Input(default_text = "0", key = "SelT"), sg.Text(text = "", key = "SelT"), sg.Button(pad = (0, 0), tooltip = 'Delete', key = 'DelS'), sg.Button(pad = (0, 0), tooltip = 'Print', key = 'Prin')]  ]

tab2 = [  [sg.Button(key = 'Rect', pad = (0, 0), tooltip = 'Rectangle'), sg.Button(pad = (0, 0), tooltip = 'Test Object', key = 'Test')]  ]

BC = 'white'
CW = 600
CH = 450
LXM = (CW / 2)
LYM = (CH / 2)

mid_left = [  [sg.Text(text = "X:"), sg.Input(default_text = "0", key = "TLX", size = (3, 1))],
              [sg.Text(text = "Y:"), sg.Input(default_text = "0", key = "TLY", size = (3, 1))],
              [sg.Text(text = "Scale X:"), sg.Input(default_text = "0", key = "TSX", size = (3, 1))],
              [sg.Text(text = "Scale Y:"), sg.Input(default_text = "0", key = "TSY", size = (3, 1))]  ]

can = sg.Canvas(size = (CW, CH), background_color = BC, border_width = 1, key = "canvas")

mid_screen = [  [sg.Frame("Insert Values", mid_left, expand_x = True, expand_y = True), can]  ]

layout = [  [sg.Frame("", items_files, pad = (1, 1), expand_x = False, expand_y = False), sg.TabGroup([[sg.Tab('Insert', tab2)]])],
            [mid_screen]  ]

N = 0
OL = [0]
window = sg.Window('title', layout, finalize = True)
tkc = can.TKCanvas
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break

    TLX = values["TLX"]
    TLY = values["TLY"]
    TSX = values["TSX"]
    TSY = values["TSY"]
    LT = 2.5
    FC = 'red'
    LC = 'black'
    LineSmooth = 0

    LXA = float(LXM + float(TLX))
    LYA = float(LYM + float(TLY))
    
    SO = values["SelT"]

    P1 = list((D.Part1, None))
    P2 = list((D.Part2, None))
    P3 = list((D.Part3, None))

    P1N = 0
    P2N = 0
    P3N = 0

    P1C = 'red'
    P2C = 'blue'
    P3C = 'yellow'

    def sel(e):
        print ("--")
        print (e)
        P = re.findall(r'\d+', str(e.widget.find_withtag("current")))
        print (P)
        LY = str(P[0])
        print (LY)
        window["SelT"].update(LY)

    def move(e):
        tkc.moveto(e.widget.find_withtag('current'), e.x, e.y)

    if event == 'Rect':
        OL.append(tkc.create_rectangle((float(LXM) + float(TLX) + float(TSX)), (float(LYM) + float(TLY) + float(TSY)), (float(LXM) + float(TLX) - float(TSX)), (float(LYM) + float(TLY) - float(TSY)), fill = FC, outline = LC, width = LT,  tag = 'R' + str(N)))
        tkc.tag_bind((N + 1), '<1>', sel)
        tkc.tag_bind((N + 1), '<B1-Motion>', move)
        N = N + 1
        print ("--")
        print (OL)
        print (N)

    if event == 'Test':
        OL.append(C.Test1(N, tkc, P1[P1N], P2[P2N], P3[P3N], P1C, P2C, P3C, LXA, LYA, (float(TSX) / 2), (float(TSY) / 2), float(LT), LC, LineSmooth))
        tkc.tag_bind((N + 1), '<1>', sel)
        tkc.tag_bind((N + 1), '<B1-Motion>', move)
        N = N + 1
        print ("--")
        print (OL)
        print (N)

    if event == 'Prin':
        print (SO)
    
    if event == 'DelS':
        print ("--")
        print (OL.index(int(SO)))
        print (OL)
        tkc.delete(int(SO))
        OL.pop(OL.index(int(SO)))
        print (OL)

window.close()

However, if I tried to generate a multiobject shape like the one in “Test” by assigning the event to "Test", it appended None to the OL list and jumped the number farther, so when it is supposed to be 1, it became 3. On the other hand, I am only able to drag the red diamond in the multiobject around, when it is supposed to be all moving in unison. How to put multiple canvas items in one tag, so I can drag around them?