2017-10-17 120 views
-2

我希望我點擊一個按鈕後更新我的Listbox小部件。但是我遇到了一個邏輯錯誤。當我點擊按鈕時,沒有任何反應。根本沒有錯誤。在Python中添加項目到列表框Tkinter

listOfCompanies: [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle'] 

def populatebox(): 
      listBox.insert("end", listOfCompanies) 

btn = Button(self, text="Update list", command = lambda: populatebox()) 
btn.pack() 
+0

我不相信你沒有得到一個錯誤。 'listOfCompanies'是一個'list',它在函數'populatebox()'內部不存在,所以當它在函數內部調用時會返回一個錯誤'NameError:name'listOfCompanies'沒有被定義。所以你保證將你提供給我們的代碼返回一個錯誤。 –

+0

即使列表未在populatebox()中定義,也可以對列表進行讀取訪問 - 因此Python不會抱怨該列表 – DonGru

+0

@DonGru「列表」不存在,句號。她宣佈它不正確。 –

回答

0

如果你正在尋找剛剛從list插入每一個tupleListbox因爲他們沒有分離出tuple然後有兩個重大變化。

首先你不能聲明一個列表爲list: [1, 2, 3, ...],它必須是list = [1, 2, 3, ...]

其次,您目前正嘗試將整個list插入到Listbox中的一個條目中。你應該改寫它們,見下面的例子:

from tkinter import * 

root = Tk() 

listBox = Listbox(root) 
listBox.pack() 

listOfCompanies = [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle']] 

def populatebox(): 
    for i in listOfCompanies: 
     listBox.insert("end", i) 

btn = Button(root, text="Update list", command = lambda: populatebox()) 
btn.pack() 
+0

實際上,我從閱讀.csv文件中得到了這個列表,但是我沒有將它包含在原始文章中,因爲我認爲它會使文章太冗長而且無關緊要。無論哪種方式,我試着放置你建議的代碼,同樣,當我點擊按鈕時,它沒有輸出,也沒有錯誤。 –

+0

劃痕,它工作。感謝Ethan。 –

+0

如果此解決方案回答您的問題,請您將其標記爲未來用戶接受。 –