2017-10-17 21 views
-2

ボタンをクリックするとリストボックスウィジェットが更新されるようにしたいと思います。しかし、私は論理エラーに遭遇しました。ボタンをクリックすると、何も起こりません。エラーは一切ありません。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'は関数' populatebox() 'の中には存在しない' list'なので、その関数の中でそれを呼び出すと、 'NameError:name 'というlistOfCompaniesが定義されていません。したがって、あなたが提供したコードでエラーを返すことが保証されます。 –

+0

populatebox()内でリストが定義されていなくても、リストへの読み取りアクセスが可能です。つまり、Pythonはそのことについて文句を言いません。 – DonGru

+0

@DonGru 'list'は存在しません。彼女はそれを間違って宣言しました。 –

答えて

0

あなたはちょうど彼らがtupleを分離することなくそのままlistからListboxにすべてのtupleを挿入するために探している場合は、2つの大きな変化があります。

最初にリストをlist: [1, 2, 3, ...]と宣言することはできません。list = [1, 2, 3, ...]である必要があります。

第2に、list全体をListboxの1つのエントリに挿入しようとしています。代わりにそれらを反復する必要があります。以下の例を参照してください。

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

それはうまくいきました。感謝のイーサン。 –

+0

この解決策があなたの質問に答えるなら、将来のユーザーのために受け入れられたものとしてマークしてください。 –

関連する問題