Directory size checker
Function equal to built-in
def get_subdirs(Dir):
    dir_array = []
    for x in os.listdir(Dir):
        dir_array.append(x)
    return dir_array

This is exactly the same as os.listdir, so just use it instead of the whole function.
Iterate simpler
for x in range(len(dir_array)):
    file_size = float(get_dir_size(Dir + &quot;\\&quot; + dir_array[x])) / 1073741824  # Converts the bytes to GB

    Dict[dir_array[x]] = file_size

Can become:
for dir in dir_array:
    file_size = float(get_dir_size(Dir + &quot;\\&quot; + dir)) / 1073741824  # Converts the bytes to GB

    Dict[dir] = file_size

Constants at the start
Putting constants at the start of the code is better than putting them inside, so at the start:
BYTES_IN_GIGABYTE = 1073741824  

User message
Your code works for files so:
Dir = askdirectory(title=&quot;Select Folder&quot;)

becomes:
Dir = askdirectory(title=&quot;Select Folder or File:&quot;)

Fancy progressbar
A fancy way to signify that the program is working can be found here
-1 lost in code
You return -1 sometimes from get_dir_size but you never check for it.
One comment on the logic
for i in sort_dict:
    if i[1] &gt; 1:  # continues using gigabytes

I would rename i to dir and add a comment saying what i[1] is.
Cross platform compatibility
As suggested by @s.dallapalma avoid concatenating paths with the plus (+) sign, and use os.path.join or pathlib instead. Thus, the code can work on different OS.
I liked the attention to handling of exception and the new clean format strings.