Sep-11-2020, 06:21 AM
Hello. I would like to know what is really the most efficient and best way to create multiple variables inside for loop. At the moment, I am creating 20 variables one by one and that is not a massive problem for me. See the code below:
My code works fine and as expected, the problem is that everytime the program starts, I calculate how many unique devices I have ( it might be 5, 10, 15 or whatever) and I want to generate the number of rectangles based on the number that has been returned from the function:
def picking_gui():
number=count_unique_devices(myConnection)
print("number=",number)
global device1,device2,device3,device4,device5,device6,device7,device8,device9,device10,device11,device12,device13,device14,device15,device16,device17,device18,device19,device20
#global canvas_tk
device1 = canvas_tk.create_rectangle(20,400,90,470,fill='red')
canvas_tk.create_text(55,435,text="device1")
device2 = canvas_tk.create_rectangle(110,400,180,470,fill='red')
canvas_tk.create_text(145,435,text="device2")
device3 = canvas_tk.create_rectangle(210,400,280,470,fill='red')
canvas_tk.create_text(245,435,text="device3")
device4 = canvas_tk.create_rectangle(310,400,380,470,fill='red')
canvas_tk.create_text(345,435,text="device4")
device5 = canvas_tk.create_rectangle(410,400,480,470,fill='red')
canvas_tk.create_text(445,435,text="device5")
device6 = canvas_tk.create_rectangle(510,400,580,470,fill='red')
canvas_tk.create_text(545,435,text="device6")
device7 = canvas_tk.create_rectangle(610,400,680,470,fill='red')
canvas_tk.create_text(645,435,text="device7")
device8 = canvas_tk.create_rectangle(710,400,780,470,fill='red')
canvas_tk.create_text(745,435,text="device8")
device9 = canvas_tk.create_rectangle(810,400,880,470,fill='red')
canvas_tk.create_text(845,435,text="device9")
device10 = canvas_tk.create_rectangle(910,400,980,470,fill='red')
canvas_tk.create_text(945,435,text="device10")
device11 = canvas_tk.create_rectangle(20,500,90,570,fill='red')
canvas_tk.create_text(55,535,text="device11")
device12 = canvas_tk.create_rectangle(110,500,180,570,fill='red')
canvas_tk.create_text(145,535,text="device12")
device13 = canvas_tk.create_rectangle(210,500,280,570,fill='red')
canvas_tk.create_text(245,535,text="device13")
device14 = canvas_tk.create_rectangle(310,500,380,570,fill='red')
canvas_tk.create_text(345,535,text="device14")
device15 = canvas_tk.create_rectangle(410,500,480,570,fill='red')
canvas_tk.create_text(445,535,text="device15")
device16 = canvas_tk.create_rectangle(510,500,580,570,fill='red')
canvas_tk.create_text(545,535,text="device16")
device17 = canvas_tk.create_rectangle(610,500,680,570,fill='red')
canvas_tk.create_text(645,535,text="device17")
device18 = canvas_tk.create_rectangle(710,500,780,570,fill='red')
canvas_tk.create_text(745,535,text="device18")
device19 = canvas_tk.create_rectangle(810,500,880,570,fill='red')
canvas_tk.create_text(845,535,text="device19")
device20 = canvas_tk.create_rectangle(910,500,980,570,fill='red')
canvas_tk.create_text(945,535,text="device20")I am creating 20 rectangles and assigning a different name to each one. The reason why I am assigning a name to each rectangle and declaring it as global, is because I need to be able to access and modify these rectangles in other functions such as:def update_rectangle_color(device_name,last_device):
canvas_tk.itemconfig(eval(last_device),fill="red")
print("updating rectangle colour=",device_name)
canvas_tk.itemconfig(eval(device_name),fill="green")
print("item updated")
last_device = device_name
return last_devicein the function above, I pass the device name, for example "device4" and I will change the colour of that rectangle.My code works fine and as expected, the problem is that everytime the program starts, I calculate how many unique devices I have ( it might be 5, 10, 15 or whatever) and I want to generate the number of rectangles based on the number that has been returned from the function:
number=count_unique_devices(myConnection)
print("number=",number)I am thinking whether I could use a for loop or simmilar to dynamically create and initialze only the required amount of rectangle everytime?
