I am trying to create an expandable list viewer in python3.6.8 using tkinter grid. I have a scroll frame that contains a list of element frames in a grid layout: ApplicationWorkingProperlyIMG This application works great until I expand the list to have more than ~950 elements, then the elements start stacking. GridStackingIssueIMG I checked that the grid('row') data is correct: globalListIdx=0 grid('row')Idx=0 globalListIdx=1 grid('row')Idx=1 globalListIdx=2 grid('row')Idx=2 globalListIdx=3 grid('row')Idx=3 globalListIdx=4 grid('row')Idx=4 globalListIdx=5 grid('row')Idx=5 globalListIdx=6 grid('row')Idx=6 globalListIdx=7 grid('row')Idx=7 globalListIdx=8 grid('row')Idx=8 globalListIdx=9 grid('row')Idx=9 globalListIdx=10 grid('row')Idx=10 globalListIdx=11 grid('row')Idx=11 globalListIdx=12 grid('row')Idx=12 globalListIdx=13 grid('row')Idx=13 globalListIdx=14 grid('row')Idx=14 globalListIdx=15 grid('row')Idx=15 globalListIdx=16 grid('row')Idx=16 globalListIdx=17 grid('row')Idx=17 globalListIdx=18 grid('row')Idx=18 globalListIdx=19 grid('row')Idx=19 globalListIdx=20 grid('row')Idx=20 globalListIdx=21 grid('row')Idx=21 globalListIdx=22 grid('row')Idx=22 globalListIdx=23 grid('row')Idx=23 globalListIdx=24 grid('row')Idx=24 globalListIdx=25 grid('row')Idx=25 globalListIdx=26 grid('row')Idx=26 globalListIdx=27 grid('row')Idx=27 globalListIdx=28 grid('row')Idx=28 globalListIdx=29 grid('row')Idx=29 globalListIdx=30 grid('row')Idx=30 globalListIdx=31 grid('row')Idx=31 globalListIdx=32 grid('row')Idx=32 globalListIdx=33 grid('row')Idx=33 globalListIdx=34 grid('row')Idx=34 globalListIdx=35 grid('row')Idx=35 globalListIdx=36 grid('row')Idx=36 globalListIdx=37 grid('row')Idx=37 globalListIdx=38 grid('row')Idx=38 globalListIdx=39 grid('row')Idx=39 globalListIdx=40 grid('row')Idx=40 globalListIdx=41 grid('row')Idx=41 globalListIdx=42 grid('row')Idx=42 globalListIdx=43 grid('row')Idx=43 globalListIdx=44 grid('row')Idx=44 globalListIdx=45 grid('row')Idx=45 globalListIdx=46 grid('row')Idx=46 globalListIdx=47 grid('row')Idx=47 globalListIdx=48 grid('row')Idx=48 globalListIdx=49 grid('row')Idx=49 globalListIdx=50 grid('row')Idx=50 globalListIdx=51 grid('row')Idx=51 globalListIdx=52 grid('row')Idx=52 globalListIdx=53 grid('row')Idx=53 globalListIdx=54 grid('row')Idx=54 globalListIdx=55 grid('row')Idx=55 globalListIdx=56 grid('row')Idx=56 globalListIdx=57 grid('row')Idx=57 globalListIdx=58 grid('row')Idx=58 globalListIdx=59 grid('row')Idx=59 globalListIdx=60 grid('row')Idx=60 globalListIdx=61 grid('row')Idx=61 globalListIdx=62 grid('row')Idx=62 globalListIdx=63 grid('row')Idx=63 globalListIdx=64 grid('row')Idx=64 globalListIdx=65 grid('row')Idx=65 globalListIdx=66 grid('row')Idx=66 globalListIdx=67 grid('row')Idx=67 globalListIdx=68 grid('row')Idx=68 globalListIdx=69 grid('row')Idx=69 globalListIdx=70 grid('row')Idx=70 globalListIdx=71 grid('row')Idx=71 globalListIdx=72 grid('row')Idx=72 globalListIdx=73 grid('row')Idx=73 globalListIdx=74 grid('row')Idx=74 globalListIdx=75 grid('row')Idx=75 globalListIdx=76 grid('row')Idx=76 globalListIdx=77 grid('row')Idx=77 globalListIdx=78 grid('row')Idx=78 globalListIdx=79 grid('row')Idx=79 globalListIdx=80 grid('row')Idx=80 globalListIdx=81 grid('row')Idx=81 globalListIdx=82 grid('row')Idx=82 globalListIdx=83 grid('row')Idx=83 globalListIdx=84 grid('row')Idx=84 globalListIdx=85 grid('row')Idx=85 globalListIdx=86 grid('row')Idx=86 globalListIdx=87 grid('row')Idx=87 globalListIdx=88 grid('row')Idx=88 globalListIdx=89 grid('row')Idx=89 globalListIdx=90 grid('row')Idx=90 globalListIdx=91 grid('row')Idx=91 globalListIdx=92 grid('row')Idx=92 globalListIdx=93 grid('row')Idx=93 globalListIdx=94 grid('row')Idx=94 globalListIdx=95 grid('row')Idx=95 globalListIdx=96 grid('row')Idx=96 globalListIdx=97 grid('row')Idx=97 globalListIdx=98 grid('row')Idx=98 globalListIdx=99 grid('row')Idx=99 globalListIdx=100 grid('row')Idx=100 ... globalListIdx=900 grid('row')Idx=900 globalListIdx=901 grid('row')Idx=901 globalListIdx=902 grid('row')Idx=902 globalListIdx=903 grid('row')Idx=903 globalListIdx=904 grid('row')Idx=904 globalListIdx=905 grid('row')Idx=905 globalListIdx=906 grid('row')Idx=906 globalListIdx=907 grid('row')Idx=907 globalListIdx=908 grid('row')Idx=908 globalListIdx=909 grid('row')Idx=909 globalListIdx=910 grid('row')Idx=910 globalListIdx=911 grid('row')Idx=911 globalListIdx=912 grid('row')Idx=912 globalListIdx=913 grid('row')Idx=913 globalListIdx=914 grid('row')Idx=914 globalListIdx=915 grid('row')Idx=915 globalListIdx=916 grid('row')Idx=916 globalListIdx=917 grid('row')Idx=917 globalListIdx=918 grid('row')Idx=918 globalListIdx=919 grid('row')Idx=919 globalListIdx=920 grid('row')Idx=920 globalListIdx=921 grid('row')Idx=921 globalListIdx=922 grid('row')Idx=922 globalListIdx=923 grid('row')Idx=923 globalListIdx=924 grid('row')Idx=924 globalListIdx=925 grid('row')Idx=925 globalListIdx=926 grid('row')Idx=926 globalListIdx=927 grid('row')Idx=927 globalListIdx=928 grid('row')Idx=928 globalListIdx=929 grid('row')Idx=929 globalListIdx=930 grid('row')Idx=930 globalListIdx=931 grid('row')Idx=931 globalListIdx=932 grid('row')Idx=932 globalListIdx=933 grid('row')Idx=933 globalListIdx=934 grid('row')Idx=934 globalListIdx=935 grid('row')Idx=935 globalListIdx=936 grid('row')Idx=936 globalListIdx=937 grid('row')Idx=937 globalListIdx=938 grid('row')Idx=938 globalListIdx=939 grid('row')Idx=939 globalListIdx=940 grid('row')Idx=940 globalListIdx=941 grid('row')Idx=941 globalListIdx=942 grid('row')Idx=942 globalListIdx=943 grid('row')Idx=943 globalListIdx=944 grid('row')Idx=944 globalListIdx=945 grid('row')Idx=945 globalListIdx=946 grid('row')Idx=946 globalListIdx=947 grid('row')Idx=947 globalListIdx=948 grid('row')Idx=948 globalListIdx=949 grid('row')Idx=949 globalListIdx=950 grid('row')Idx=950 globalListIdx=951 grid('row')Idx=951 globalListIdx=952 grid('row')Idx=952 globalListIdx=953 grid('row')Idx=953 globalListIdx=954 grid('row')Idx=954 globalListIdx=955 grid('row')Idx=955 globalListIdx=956 grid('row')Idx=956 globalListIdx=957 grid('row')Idx=957 globalListIdx=958 grid('row')Idx=958 globalListIdx=959 grid('row')Idx=959 globalListIdx=960 grid('row')Idx=960 globalListIdx=961 grid('row')Idx=961 globalListIdx=962 grid('row')Idx=962 globalListIdx=963 grid('row')Idx=963 globalListIdx=964 grid('row')Idx=964 globalListIdx=965 grid('row')Idx=965 globalListIdx=966 grid('row')Idx=966 globalListIdx=967 grid('row')Idx=967 globalListIdx=968 grid('row')Idx=968 globalListIdx=969 grid('row')Idx=969 globalListIdx=970 grid('row')Idx=970 globalListIdx=971 grid('row')Idx=971 globalListIdx=972 grid('row')Idx=972 globalListIdx=973 grid('row')Idx=973 globalListIdx=974 grid('row')Idx=974 globalListIdx=975 grid('row')Idx=975 globalListIdx=976 grid('row')Idx=976 globalListIdx=977 grid('row')Idx=977 globalListIdx=978 grid('row')Idx=978 globalListIdx=979 grid('row')Idx=979 globalListIdx=980 grid('row')Idx=980 globalListIdx=981 grid('row')Idx=981 globalListIdx=982 grid('row')Idx=982 globalListIdx=983 grid('row')Idx=983 globalListIdx=984 grid('row')Idx=984 globalListIdx=985 grid('row')Idx=985 globalListIdx=986 grid('row')Idx=986 globalListIdx=987 grid('row')Idx=987 globalListIdx=988 grid('row')Idx=988 globalListIdx=989 grid('row')Idx=989 globalListIdx=990 grid('row')Idx=990 globalListIdx=991 grid('row')Idx=991 globalListIdx=992 grid('row')Idx=992 globalListIdx=993 grid('row')Idx=993 globalListIdx=994 grid('row')Idx=994 globalListIdx=995 grid('row')Idx=995 globalListIdx=996 grid('row')Idx=996 globalListIdx=997 grid('row')Idx=997 globalListIdx=998 grid('row')Idx=998 globalListIdx=999 grid('row')Idx=999 globalListIdx=1000 grid('row')Idx=1000 globalListIdx=1001 grid('row')Idx=1001 globalListIdx=1002 grid('row')Idx=1002 globalListIdx=1003 grid('row')Idx=1003 globalListIdx=1004 grid('row')Idx=1004 globalListIdx=1005 grid('row')Idx=1005 globalListIdx=1006 grid('row')Idx=1006 globalListIdx=1007 grid('row')Idx=1007 globalListIdx=1008 grid('row')Idx=1008 globalListIdx=1009 grid('row')Idx=1009 globalListIdx=1010 grid('row')Idx=1010 globalListIdx=1011 grid('row')Idx=1011 globalListIdx=1012 grid('row')Idx=1012 globalListIdx=1013 grid('row')Idx=1013 globalListIdx=1014 grid('row')Idx=1014 globalListIdx=1015 grid('row')Idx=1015 globalListIdx=1016 grid('row')Idx=1016 globalListIdx=1017 grid('row')Idx=1017 globalListIdx=1018 grid('row')Idx=1018 globalListIdx=1019 grid('row')Idx=1019 globalListIdx=1020 grid('row')Idx=1020 globalListIdx=1021 grid('row')Idx=1021 globalListIdx=1022 grid('row')Idx=1022 globalListIdx=1023 grid('row')Idx=1023 globalListIdx=1024 grid('row')Idx=1024 globalListIdx=1025 grid('row')Idx=1025 globalListIdx=1026 grid('row')Idx=1026 globalListIdx=1027 grid('row')Idx=1027 globalListIdx=1028 grid('row')Idx=1028 globalListIdx=1029 grid('row')Idx=1029 globalListIdx=1030 grid('row')Idx=1030 globalListIdx=1031 grid('row')Idx=1031 globalListIdx=1032 grid('row')Idx=1032 globalListIdx=1033 grid('row')Idx=1033 globalListIdx=1034 grid('row')Idx=1034 globalListIdx=1035 grid('row')Idx=1035 globalListIdx=1036 grid('row')Idx=1036 globalListIdx=1037 grid('row')Idx=1037 globalListIdx=1038 grid('row')Idx=1038 globalListIdx=1039 grid('row')Idx=1039 globalListIdx=1040 grid('row')Idx=1040 globalListIdx=1041 grid('row')Idx=1041 globalListIdx=1042 grid('row')Idx=1042 globalListIdx=1043 grid('row')Idx=1043 globalListIdx=1044 grid('row')Idx=1044 globalListIdx=1045 grid('row')Idx=1045 globalListIdx=1046 grid('row')Idx=1046 globalListIdx=1047 grid('row')Idx=1047 globalListIdx=1048 grid('row')Idx=1048 globalListIdx=1049 grid('row')Idx=1049 globalListIdx=1050 grid('row')Idx=1050 globalListIdx=1051 grid('row')Idx=1051 globalListIdx=1052 grid('row')Idx=1052 globalListIdx=1053 grid('row')Idx=1053 globalListIdx=1054 grid('row')Idx=1054 globalListIdx=1055 grid('row')Idx=1055 globalListIdx=1056 grid('row')Idx=1056 globalListIdx=1057 grid('row')Idx=1057 globalListIdx=1058 grid('row')Idx=1058 globalListIdx=1059 grid('row')Idx=1059 globalListIdx=1060 grid('row')Idx=1060 globalListIdx=1061 grid('row')Idx=1061 globalListIdx=1062 grid('row')Idx=1062 globalListIdx=1063 grid('row')Idx=1063 globalListIdx=1064 grid('row')Idx=1064 globalListIdx=1065 grid('row')Idx=1065 globalListIdx=1066 grid('row')Idx=1066 globalListIdx=1067 grid('row')Idx=1067 globalListIdx=1068 grid('row')Idx=1068 globalListIdx=1069 grid('row')Idx=1069 globalListIdx=1070 grid('row')Idx=1070 globalListIdx=1071 grid('row')Idx=1071 globalListIdx=1072 grid('row')Idx=1072 globalListIdx=1073 grid('row')Idx=1073 globalListIdx=1074 grid('row')Idx=1074 globalListIdx=1075 grid('row')Idx=1075 globalListIdx=1076 grid('row')Idx=1076 globalListIdx=1077 grid('row')Idx=1077 globalListIdx=1078 grid('row')Idx=1078 globalListIdx=1079 grid('row')Idx=1079 globalListIdx=1080 grid('row')Idx=1080 globalListIdx=1081 grid('row')Idx=1081 globalListIdx=1082 grid('row')Idx=1082 globalListIdx=1083 grid('row')Idx=1083 globalListIdx=1084 grid('row')Idx=1084 globalListIdx=1085 grid('row')Idx=1085 globalListIdx=1086 grid('row')Idx=1086 globalListIdx=1087 grid('row')Idx=1087 globalListIdx=1088 grid('row')Idx=1088 globalListIdx=1089 grid('row')Idx=1089 globalListIdx=1090 grid('row')Idx=1090 globalListIdx=1091 grid('row')Idx=1091 globalListIdx=1092 grid('row')Idx=1092 globalListIdx=1093 grid('row')Idx=1093 globalListIdx=1094 grid('row')Idx=1094 globalListIdx=1095 grid('row')Idx=1095 globalListIdx=1096 grid('row')Idx=1096 globalListIdx=1097 grid('row')Idx=1097 globalListIdx=1098 grid('row')Idx=1098 globalListIdx=1099 grid('row')Idx=1099 globalListIdx=1100 grid('row')Idx=1100 globalListIdx=1101 grid('row')Idx=1101 globalListIdx=1102 grid('row')Idx=1102 globalListIdx=1103 grid('row')Idx=1103 globalListIdx=1104 grid('row')Idx=1104 globalListIdx=1105 grid('row')Idx=1105 globalListIdx=1106 grid('row')Idx=1106 globalListIdx=1107 grid('row')Idx=1107 globalListIdx=1108 grid('row')Idx=1108 globalListIdx=1109 grid('row')Idx=1109 globalListIdx=1110 grid('row')Idx=1110 globalListIdx=1111 grid('row')Idx=1111 globalListIdx=1112 grid('row')Idx=1112 globalListIdx=1113 grid('row')Idx=1113 globalListIdx=1114 grid('row')Idx=1114 globalListIdx=1115 grid('row')Idx=1115 globalListIdx=1116 grid('row')Idx=1116 globalListIdx=1117 grid('row')Idx=1117 globalListIdx=1118 grid('row')Idx=1118 globalListIdx=1119 grid('row')Idx=1119 globalListIdx=1120 grid('row')Idx=1120 globalListIdx=1121 grid('row')Idx=1121 globalListIdx=1122 grid('row')Idx=1122 globalListIdx=1123 grid('row')Idx=1123 globalListIdx=1124 grid('row')Idx=1124 globalListIdx=1125 grid('row')Idx=1125 globalListIdx=1126 grid('row')Idx=1126 globalListIdx=1127 grid('row')Idx=1127 globalListIdx=1128 grid('row')Idx=1128 globalListIdx=1129 grid('row')Idx=1129 globalListIdx=1130 grid('row')Idx=1130 globalListIdx=1131 grid('row')Idx=1131 globalListIdx=1132 grid('row')Idx=1132 globalListIdx=1133 grid('row')Idx=1133 globalListIdx=1134 grid('row')Idx=1134 globalListIdx=1135 grid('row')Idx=1135 globalListIdx=1136 grid('row')Idx=1136 globalListIdx=1137 grid('row')Idx=1137 globalListIdx=1138 grid('row')Idx=1138 globalListIdx=1139 grid('row')Idx=1139 globalListIdx=1140 grid('row')Idx=1140 globalListIdx=1141 grid('row')Idx=1141 globalListIdx=1142 grid('row')Idx=1142 globalListIdx=1143 grid('row')Idx=1143 globalListIdx=1144 grid('row')Idx=1144 globalListIdx=1145 grid('row')Idx=1145 globalListIdx=1146 grid('row')Idx=1146 globalListIdx=1147 grid('row')Idx=1147 globalListIdx=1148 grid('row')Idx=1148 globalListIdx=1149 grid('row')Idx=1149 globalListIdx=1150 grid('row')Idx=1150 globalListIdx=1151 grid('row')Idx=1151 globalListIdx=1152 grid('row')Idx=1152 globalListIdx=1153 grid('row')Idx=1153 globalListIdx=1154 grid('row')Idx=1154 globalListIdx=1155 grid('row')Idx=1155 globalListIdx=1156 grid('row')Idx=1156 globalListIdx=1157 grid('row')Idx=1157 globalListIdx=1158 grid('row')Idx=1158 globalListIdx=1159 grid('row')Idx=1159 globalListIdx=1160 grid('row')Idx=1160 globalListIdx=1161 grid('row')Idx=1161 globalListIdx=1162 grid('row')Idx=1162 globalListIdx=1163 grid('row')Idx=1163 globalListIdx=1164 grid('row')Idx=1164 globalListIdx=1165 grid('row')Idx=1165 globalListIdx=1166 grid('row')Idx=1166 globalListIdx=1167 grid('row')Idx=1167 globalListIdx=1168 grid('row')Idx=1168 globalListIdx=1169 grid('row')Idx=1169 globalListIdx=1170 grid('row')Idx=1170 globalListIdx=1171 grid('row')Idx=1171 globalListIdx=1172 grid('row')Idx=1172 globalListIdx=1173 grid('row')Idx=1173 globalListIdx=1174 grid('row')Idx=1174 I have tried reducing the size of the list and after hiding ~300 rows from the start, the rows at the end displayed properly again. AfterHiding300ListTopIMG AfterHiding300ListBottomIMG I would like to know why grid() is failing after about a thousand elements and I would like to know if there are any strategies or alternate approaches to fixing it. MIN CODE RECREATE: import tkinter from os import listdir from os.path import abspath from tkinter import messagebox, ttk import tkinter as tk # lista = ["one","two","three","four","five","six"] class PackFrame: pack={"e":0, "f":"none", "s":"top"} def getComponent(self, parent): return tkinter.Frame(parent) def __init__(self, parent) -> None: self.parent = parent self.frame = self.getComponent(parent) self.frame.pack(expand=self.pack["e"], fill=self.pack["f"], side=self.pack["s"]) def show(self): self.frame.pack(expand=self.pack["e"], fill=self.pack["f"], side=self.pack["s"]) def hide(self): self.frame.pack_forget() def destroy(self): # Destroying a frame calls destroy() on all nested components self.frame.destroy() def update(self, newPos): for key in self.pack: if key in newPos: self.pack[key] = newPos[key] if not self.frame.grid_info(): self.show() class ScrollGridFrame(PackFrame): def getComponent(self, parent): self.outerFrame = tkinter.Frame(parent) self.outerFrame.pack(side='right', fill='both', expand=1) return self.outerFrame def getInnerFrame(self): return self.frame def getContentSize(self): # print("GettingContentSize") return (0,0,self.frame.winfo_width(),self.frame.winfo_height()) def destroy(self): super().destroy() self.canvasScrollBar.destroy() self.tableDisplayCanvas.destroy() def __init__(self, parent, height=500, width=700): super().__init__(parent) parent.configure(highlightbackground="black", highlightthickness=2) self.tableDisplayCanvas = tkinter.Canvas(self.outerFrame, height=height, width=width) self.tableDisplayCanvas.pack(side='left', fill='both', expand=1) self.canvasScrollBar = ttk.Scrollbar(self.frame, orient='vertical', command=self.tableDisplayCanvas.yview) self.canvasScrollBar.pack(side="right", fill='y') self.tableDisplayCanvas.configure(yscrollcommand=self.canvasScrollBar.set) # self.tableDisplayCanvas.bind('<Configure>', # # lambda e: self.tableDisplayCanvas.configure(scrollregion=(0,0,1000,3000))) # lambda e: self.tableDisplayCanvas.configure(scrollregion=self.getContentSize())) self.frame = tkinter.Frame(self.tableDisplayCanvas) self.frame.bind('<Configure>', # lambda e: self.tableDisplayCanvas.configure(scrollregion=(0,0,1000,3000))) lambda e: self.tableDisplayCanvas.configure(scrollregion=self.getContentSize())) self.tableDisplayCanvas.create_window((0, 0), window=self.frame, anchor='nw') frameList = [] def addOneThousand(): global frameList curSize = len(frameList) print(str(curSize)) newFrameList = [] increase = 1100 for idx in range(0, increase): newFrame = tkinter.LabelFrame(listFrame, text="") label = tkinter.Label(newFrame, text=str(idx)) label.grid(row=0, column=0) inputOne = tkinter.Entry(newFrame, width=30) inputOne.grid(row=0, column=1) buttonOne = tkinter.Button(newFrame, text="clickMe", width=30, command=lambda *args, i=idx: print("You Clicked "+str(i))) buttonOne.grid(row=0, column=2) newFrame.grid(row=idx, column=0, columnspan=2) newFrameList.append(newFrame) oIdx = 0 for idx in range(increase, increase+curSize): frameList[oIdx].grid(row=idx) oIdx+=1 frameList = newFrameList+frameList window = tkinter.Tk() window.title("test") mainFrame = tkinter.Frame(window, width = 600) scrollFrameWrapper = ScrollGridFrame(mainFrame) scrollFrame = scrollFrameWrapper.getInnerFrame() buttonFrame1 = tkinter.Frame(scrollFrame) buttonFrame1.grid(row=0) listFrame = tkinter.Frame(scrollFrame) listFrame.grid(row=1) buttonFrame2 = tkinter.Frame(scrollFrame) buttonFrame2.grid(row=2) upTo = 4 for rowIdx in range(0,upTo): newFrame = tkinter.LabelFrame(listFrame, text="") label = tkinter.Label(newFrame, text=str(rowIdx)) label.grid(row=0, column=0) inputOne = tkinter.Entry(newFrame, width=30) inputOne.grid(row=0, column=1) buttonOne = tkinter.Button(newFrame, text="clickMe", width=30, command=lambda *args, i=rowIdx: print("You Clicked "+str(i))) buttonOne.grid(row=0, column=2) newFrame.grid(row=rowIdx, column=0, columnspan=2) frameList.append(newFrame) helloButton = tkinter.Button(buttonFrame1, text="sayHello", command=lambda *args: print("Hello")) helloButton.grid(row=0, columnspan=2) submitButton = tkinter.Button(buttonFrame2, text="Add 1000", command=lambda *args: addOneThousand()) submitButton.grid(row=0, columnspan=2) mainFrame.grid() window.mainloop() Continue reading...