[Python] Tkinter Grid stacking after 900+ elements

Discussão em 'Python' iniciado por Stack, Março 11, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página