2013-05-26 121 views
0

我試圖將動態檢測到的項目添加到PyGTK列表視圖中。動態添加行到GTK列表PyGObject

我正在使用Python 3和PyGObject。

下面是一些例子列表:

['MomAndKids', 'ddwrt', 'Squirt', 'blurb'] 
['WPA1', 'Open', 'WPA2', 'WEP'] 
['44/70', '38/70', '66/70', '55/70'] 

我希望它做一排各一個,那會變成這樣:

['MomAndKids', 'WPA1', '44/70'] 
['ddwrt', 'Open', '38/70'] 
['Squirt', 'WPA2', '66/70'] 
['blurb', 'WEP', '55/70'] 

然後添加這些行到一個GTK列表視圖。我使用這個代碼,它幾乎工程:

for i in range(len(output)): 
    string1 = output[i] 
    for i in range(len(output2)): 
     string2 = output2[i] 
     for i in range(len(output3)): 
      string3 = output3[i] 
      row = [string1, string2, string3] 
      self.APStore.append([string1, string2, string3]) 

這使得像這樣:(抱歉外部鏈接,這使得這裏幾乎沒有長過帳) http://pastebin.com/sXNnKfaf

我明白爲什麼,所以我想這:

for i in range(len(output)): 
    string1 = output[i] 
    for i in range(len(output2)): 
     string2 = output2[i] 
     for i in range(len(output3)): 
      string3 = output3[i] 
row = [string1, string2, string3] 
self.APStore.append([string1, string2, string3]) 

但它是這樣的:

['blurb', 'WEP', '55/70'] 

如果它很重要,我使用grep來檢測這個。

回答

0

這樣做了。我不確定它是否是最有效的方式,但它的工作方式與我計劃的完全一樣。

i = 0 
    for network in output: 
     aps["row" + str(i)] = self.APStore.append([network, "", "", ""]) 
     i = i + 1 
    i = 0 
    for encrypt in output2: 
     self.APStore.set(aps["row" + str(i)], 1, encrypt) 
     i = i + 1 
    i = 0 
    for quality in output3: 
     self.APStore.set(aps["row" + str(i)], 2, quality) 
     i = i + 1