2016-07-21 18 views
-1

私のtkinterリストボックスに文字列を挿入することはできません。私のコードは次のとおりです。私はこのコードのスニペットを実行するとpython tkinter listbox - エラーを挿入する

from Tkinter import * 
from tkFileDialog import askopenfilenames 

def ImportFiles(): 
    Tk().withdraw() 
    filenames = askopenfilenames() 
    for f in filenames: 
     listbox1.insert(END, f) 
    return 

root = Tk() 
root.geometry("500x800") 

listbox1 = Listbox(root).grid(row=1, sticky=W, padx=20, pady=20) 
button1 = Button(root, text='Import', command=ImportFiles).grid(row=2, sticky=W, padx=20) 

root.mainloop() 

はGUIが罰金をポップアップします。私は、ボタンを押して、開いているファイルのダイアログが表示されます。次に、いくつかのファイルを選択し、「OK」を押すとコードが爆発します。私は次のエラーを取得する:

ファイル "C:\ Python27 \ libに\ libに-TKの\のTkinter.py" コール

リターンself.func(*引数)

で、ライン1536、 ImportFilesで

ファイル ".../pyGUI_01.py"、10行目、

listbox1.insert(END、F)

はAttributeError: 'NoneType' オブジェクトには、属性 '挿入'

を持っていません

私は分かりません。オブジェクト 'listbox1'をTKリストボックスに設定しました。私のIDEには、 'insert'コマンドが有効でないという指示はありません(PyCharm)。私は間違って何をしていますか?

+0

まず、調査した場合、問題を解決する多くの質問があります。自分で問題を解決するために行ったことを私たちに教えてください。 [Ask](https://stackoverflow.com/help/how-to-ask)セクションをよく読んでください。 –

+0

第二に、 'filenames = askopenfilenames()':この1行のコードは、あなたが選択したファイルから値を取得しません。 –

+0

@Parviz。 filenames = askopenfilenames()はファイル名を取得します。私はそれらを見るために 'print'ステートメントを使いました。文字列のタプルを生成します。これをあなた自身の前で使ってみましたか? – twegner

答えて

1

グリッドの結果(row = 1、sticky = W、padx = 20、pady = 20)に変数 "listbox1"を設定しています。

2行してみてください。「グリッド()」

listbox1 = Listbox(root) 
listbox1.grid(row=1, sticky=W, padx=20, pady=20) 
今listbox1を実際リストボックスのインスタンスに設定されている

はなく、結果を

+0

それはそうしました。完璧に動作します。私は、同じ行に "グリッド"を使用できないことを認識していませんでした。 – twegner

-1

Fhaabは正しいですが、なぜ新しいTkインスタンスを作成してTk()で破棄するのですか?withdraw()?

+0

これは質問に答えません。 –

+0

私はtkinterについて学びたいので、何が起こるかを知るために多くのことをやっています。 – twegner

関連する問題