2016-07-29 8 views
0

Ich versuche, eine Liste zu erstellen, die neun Unterlisten hat. Diese Teillisten müssen in die Lage neun Tasten zu speichern, leider gibt es die folgenden Fehler:Dynamische Erstellung von Schaltflächen und Speichern in einem 2-D-Array Probleme

File "C:\PythonLearning\Testing2dArrayOfButtons.py", line 18, in <module> 
BButtons[count][gridX*(y)+x].grid(row=y, column=x) 
IndexError: list index out of range 

Ich glaube, das Problem liegt in den count, zunächst habe ich versucht, mit dem y Variable für die for Schleife, sondern dass didn arbeite überhaupt nicht. Bei Verwendung der Zahlen 0-8 anstelle der Zählvariablen wird der Fehler nicht erzeugt, die Schaltflächen werden jedoch nicht dynamisch in einem 2-D-Array-Format angeordnet.

from Tkinter import * 

gridX = 9 
gridY = 9 

BButtons=[[] for i in range(9)] 

root = Tk() 

count = -1 #introduced count because 'y variable' was not working 
for y in range(gridY): 
    count += 1 
    for x in range(gridX): 
     print count 
     BButtons[count].append(Button(root, text="X", height = 2, width = 4)) 
     print count 
     print BButtons 
     BButtons[count][gridX*(y)+x].grid(row=y, column=x) #gridX*(y)+x is the formula used to obtain the nested button location 
     print BButtons          #the buttons[][].grid is setting the button positions on the scrin to a grid 

print BButtons 

root.mainloop() 

Antwort

1
BButtons[count][gridX*(y)+x] 

gridX hat den Wert 9, die gridX*(y)+x recht große Zahl wie y Erhöhungen macht. Das wird IndexError verursachen.

BButtons[y][x] sollte funktionieren.

+0

Danke, ich weiß nicht, wie ich damit verwirrt wurde. Das gridX * (y) + x-Ding wurde ursprünglich für die Zuweisung von Text zu den Tasten verwendet und aus irgendeinem idiotischen Grund dachte ich, es würde funktionieren. – Aquacruelty