2016-04-18 16 views
-1

こんにちは〜私はPython GUIでtkinterを使用します。私のコードはリストボックスwdigetです。リストボックスウィジェットでフィルタを追加したい。 しかし、私はまったくそれを知らない。それを作るために私はどうすればいいですか? 私はフィルタを追加したい..私はそのようなことを知らない。 助けてください。私はsearch_data()を知っていません。tkiterにフィルターウィジェットを追加するにはどうすればいいですか?

from tkinter import * 

def search_data(): 
    print('d') 


root=Tk() 
dd = Frame(root, borderwidth=0) 
# create the entry widget 
entry_value = StringVar() 
entry = Entry(dd, textvariable=entry_value) 
entry.pack(side=LEFT) # where ever you want it 
Button(dd, text = 'search ', command = search_data).pack(side=LEFT)  
dd.pack() 

scrollbar=Scrollbar(root) 
scrollbar.pack(side=RIGHT,fill=Y) 
mylist=Listbox(root,yscrollcommand=scrollbar.set, width=100, height=15) 
for line in range(100): 
    mylist.insert(END,"This is line number " + str(line)) 
mylist.pack(side=LEFT,fill=BOTH) 
scrollbar.config(command=mylist.yview)  
mainloop() 

答えて

0

フィルタを使用するには、ユーザーがフィルタパターンを入力するためのGUIに「何か」が必要です。

Entryウィジェットと話しているウィジェットです。

擬似コードボタンの

# do your imports 

# create the entry widget 
entry_value = StringVar() 
entry = Entry(root, textvariable=entry_value) 
entry.pack() # where ever you want it 

#now add your list box 

#add e.g. a button to apply your filter 

def filter_data(): 
    # ... iterate over your data, check if your filter applies and decide how to proceed 

:これは行うことができる方法を確認するために、ドキュメントからのコールバックとデータ構造を確認してください。

編集データの1

保管:

あなたがリストに直接アイテムを追加しています。

mylist.insert(END,"This is line number " + str(line))

これは、データを表示する方法です - はい。 この保守可能なコードはありますか?あんまり。

表示されたデータをフィルタリングするには、表示する保存されたデータにアクセスする一部のrefresh関数をお勧めします。

これを行うには? 通常、データを格納する配列、dictなどの何らかの種類があるはずです。データを読み込んで解析するファイルでもあります。

私はあなたのコードをもとに、あなたに例を挙げてみましょう:私はあなたが後であなたの変数の命名に基づいてファイルを読み込みますと仮定あなたはダミー発電for i in range(0,100):

を持って

  • が、ほとんどの一般的なループでインデックスとして使用されるように一般的に使用されるiに変更されました。

    コードでは、データをリストに格納できます。

raw_data = range(0,100) 
actual_data = raw_data # this will be used from now on inside your refresh 
def refresh(): 
    # clean your listbox 

    # iterate over the data 
    for line in actual_data: 
     #add it now to the listbox 

def filter(): 
    # get your filter pattern first 
    # we have a string var, so use "get()" 
    filter_pattern = entry_value.get() 
    # now create a new list 
    actual_data = [] 

    # iterate over raw data, check if data matches filter 
    # if it does, append it to actual_data 

    # call refresh now 
    refresh() 

はい、私はそのコード例で行方不明がたくさんあることを知っています。

なぜですか? ほとんどのコードをそのまま残しました。 Bryanがすでに述べたように、SOはでコード作成サービスではありませんです。正直言って、あなたはプログラミングの経験がないと思います。私はそれをまっすぐにしましょう、これは悪いことではありません、あなたは多くの研究をしたように見えません。ドキュメント、チュートリアルを読んで、自分で試してみてください。これは、コード、ソフトウェアなどを作成するのに役立ちます。それだけでプログラミングの質問に役立つかもしれませんが、プログラマになることはありません。これは決断であり、誰かがあなたに強制することはできません。

+0

_ "あなたはsthを使用する必要があります" _ - "sth"とは何ですか? –

+0

が更新されました。これでわかりやすくなりました。 "sth"は "something"の略語だったはずです – R4PH43L

+0

あなたの答えに感謝します。しかし、私の英語は悪いです...あなたは私にコードを示していません...コードなし.. –

関連する問題