Hi guys,

I'm creating the width size for the buttons when I'm getting a list of arrays so I can store the buttons size in a database. The types of arrays that I stored for the buttons and the buttons width size is a list.

I have stored a list of buttons in the arrays where you can see that I'm using self.program_buttons.append. I have got a problem with the .getWidth method when I'm trying to get a list of arrays.

When I try this:

   self.program_buttons = list() 

    program_controls = xbmcgui.ControlButton(
        int(position_start), 
        int(position_top), 
        int(program_width), 
        int(program_height), 
        program_title, 
        focusTexture = path + self.button_focus, 
        noFocusTexture = path + self.button_nofocus,
        textColor ='0xFFFFFFFF',
        focusedColor ='0xFF000000'
    )
    self.program_buttons.append(ProgramControls(program_controls, program))
cur.close()
#create the buttons in the database
cur.execute('CREATE TABLE IF NOT EXISTS buttons(program_id TEXT, program_width TEXT)')
programs_button = [elem.control for elem in self.program_buttons]

program_id = list()

#add the programs buttons
self.addControls(programs_button)

for elem in programs_button:
    program_id.append(elem.getId())

print program_id

I will get the result like this:

16:44:50 T:1296  NOTICE: [3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484]

So when I try this:

program_id = list()

for elem in programs_button:
    program_id.append(elem.getId())

print program_id
#let do something...

#add the programs buttons
self.addControls(programs_button)

I will get the result like this:

16:48:44 T:4480  NOTICE: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Here is a list of buttons:

16:59:02 T:1016  NOTICE: [<xbmcgui.ControlButton object at 0x1067A650>, <xbmcgui.ControlButton object at 0x1067CF98>, <xbmcgui.ControlButton object at 0x10681098>, <xbmcgui.ControlButton object at 0x10681170>, <xbmcgui.ControlButton object at 0x10681248>, <xbmcgui.ControlButton object at 0x10681320>, <xbmcgui.ControlButton object at 0x106813F8>, <xbmcgui.ControlButton object at 0x106814D0>, <xbmcgui.ControlButton object at 0x106815A8>, <xbmcgui.ControlButton object at 0x10681680>, <xbmcgui.ControlButton object at 0x10681758>, <xbmcgui.ControlButton object at 0x10681830>, <xbmcgui.ControlButton object at 0x10681908>, <xbmcgui.ControlButton object at 0x106819E0>, <xbmcgui.ControlButton object at 0x10681AB8>, <xbmcgui.ControlButton object at 0x10681B90>, <xbmcgui.ControlButton object at 0x10681C68>, <xbmcgui.ControlButton object at 0x10681D40>, <xbmcgui.ControlButton object at 0x10681E18>, <xbmcgui.ControlButton object at 0x10681EF0>, <xbmcgui.ControlButton object at 0x10681FC8>, <xbmcgui.ControlButton object at 0x106820C8>, <xbmcgui.ControlButton object at 0x106821A0>, <xbmcgui.ControlButton object at 0x10682278>, <xbmcgui.ControlButton object at 0x10682350>, <xbmcgui.ControlButton object at 0x10682428>, <xbmcgui.ControlButton object at 0x10682500>, <xbmcgui.ControlButton object at 0x106825D8>, <xbmcgui.ControlButton object at 0x106826B0>, <xbmcgui.ControlButton object at 0x10682788>, <xbmcgui.ControlButton object at 0x10682860>, <xbmcgui.ControlButton object at 0x10682938>, <xbmcgui.ControlButton object at 0x10682A10>, <xbmcgui.ControlButton object at 0x10682AE8>, <xbmcgui.ControlButton object at 0x10682BC0>, <xbmcgui.ControlButton object at 0x10682C98>, <xbmcgui.ControlButton object at 0x10682D70>, <xbmcgui.ControlButton object at 0x10682E48>, <xbmcgui.ControlButton object at 0x10682F20>, <xbmcgui.ControlButton object at 0x10686020>, <xbmcgui.ControlButton object at 0x106860F8>, <xbmcgui.ControlButton object at 0x106861D0>, <xbmcgui.ControlButton object at 0x106862A8>, <xbmcgui.ControlButton object at 0x10686380>, <xbmcgui.ControlButton object at 0x10686458>, <xbmcgui.ControlButton object at 0x10686530>, <xbmcgui.ControlButton object at 0x10686608>, <xbmcgui.ControlButton object at 0x106866E0>, <xbmcgui.ControlButton object at 0x106867B8>, <xbmcgui.ControlButton object at 0x10686890>, <xbmcgui.ControlButton object at 0x10686968>, <xbmcgui.ControlButton object at 0x10686A40>, <xbmcgui.ControlButton object at 0x10686B18>, <xbmcgui.ControlButton object at 0x10686BF0>, <xbmcgui.ControlButton object at 0x10686CC8>, <xbmcgui.ControlButton object at 0x10686DA0>, <xbmcgui.ControlButton object at 0x10686E78>, <xbmcgui.ControlButton object at 0x10686F50>, <xbmcgui.ControlButton object at 0x10689050>, <xbmcgui.ControlButton object at 0x10689128>, <xbmcgui.ControlButton object at 0x10689200>, <xbmcgui.ControlButton object at 0x106892D8>, <xbmcgui.ControlButton object at 0x106893B0>, <xbmcgui.ControlButton 

The problem I realised that is because I moved the self.addControls(programs_button) after the for loop.

I want to use self.addControls after the for loop to allowed me to control the size for the buttons when I resize them.

Can you please help me how I can get a list of buttons size in the arrays when I moved the self.addControls after the for loop?

Well, addControls is for adding new controls. If you want to add a bunch of controls, get a full listing of them, then modify their dimensions, you will require either:

A) a modifyControls() method. However this will likely result in communicating with the database 3 or more times per button.

or

B) creating a list in memory where the controls are modified until they have the correct attributes, then only once that is completed store them in the database.

@davidnelson4911: Thank you for your advice, how about generating the ids if it is possible?

I would like to start with 3002 to count up on each value to add up depend on how many i have in the arrays.

Is it possible to do that?

If so how?

Edited 1 Year Ago by mark103

For that I would suggest creating a class with some instance variables, particularly buttonID, buttonSize, etc...

That way the buttons are tucked neatly into an easily reusable, and easier to modify interface.

then all you have to do is pass in the creatingID when you create a new instance, and you can get the creatingID to start from any way you want

I have created the list of buttons id where you can see it here:

#generating the program ids
for generate_ids in range(3002, 3485):
    program_id.append(generate_ids)

result:

01:31:52 T:8156  NOTICE: [3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484]

And for program_width:

for elem in programs_button:
    program_width.append(elem.getWidth())
print program_width

Result:

   01:35:37 T:340  NOTICE: [342, 879, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 879, 342, 691, 342, 342, 879, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 879, 342, 879, 342, 342, 691, 342, 342, 879, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 691, 342, 342, 879, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 879, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 879, 342, 691, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 879, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 691, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 691, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 879, 342, 342, 342, 342, 342, 342, 342, 342, 342]

When I try to write the data into the database, it will give me an error:

 InterfaceError: Error binding parameter 0 - probably unsupported type.

The error are jumping on this line:

cur.execute("INSERT INTO buttons(button_ids, button_width)" + " VALUES(?, ?)", [program_id, program_width])

Do you know why i'm getting the error and do you know how to fix it?

This question has already been answered. Start a new discussion instead.