2017-02-27 33 views
0

私は入力用の入力、入力をiniファイルに保存するボタン付きの簡単なGUIを作った。そしてこのポストの穴の目的のために私が追加したリストボックスにあります。リストボックスの更新/更新はどのように可能ですか?自分の名前を入力して保存を押すと、ファイルが生成されてフォルダに保存されます。しかし、リストの内容はGUIで更新されます。Tkinterリストボックス "更新"または "リフレッシュ"

GUIを開いたときに追加された新しいファイルをリストボックスに表示します。 MabyeはGUIを更新するボタンですか?

enter code here root 

root = Tk() 
root.geometry('400x300') 

L1 = Label(root, text='Input') 
L1.place(x=10, y=10) 

e1 = Entry(root) 
e1.place(x=10, y=40) 

def SaveInput(): 
config = configparser.ConfigParser() 
config.add_section("DATA") 
config.set("DATA", "NAME", e1.get()) 
list_files = os.listdir(os.getcwd()) 
list_numbers = [int(x[:-4]) for x in list_files if x.endswith(".ini")] 

if len(list_numbers) != 0: 

    new_file_num = max(list_numbers) + 1 

else: 
    new_file_num = 1 

new_file_name = str(new_file_num) + ".ini" 

with open(new_file_name, "w") as file_obj: 
    config.write(file_obj) 

L1 = Listbox(root, height=5, width=50) 
L1.place(x=10, y=100) 
# LISTBOX 
def get_filenames(): 
path = "C:/Users/ita9bi/Desktop/Test list" 
return os.listdir(path) 

for filename in get_filenames(): 
L1.insert(END, filename) 

B1 = Button(root, text='Save', command=SaveInput) 
B1.place(x=10, y=60) 



root.mainloop() 

答えて

1

あなたはあなたのリストボックスに最後に保存した項目を追加したり、すべてのファイル名を再移入するかは、毎回あなたはSaveボタンを押してください。

def SaveInput(): 
    .... 
    .... 
    new_file_name = str(new_file_num) + ".ini" 
    L1.insert(END, new_file_name) 

または

def SaveInput(): 
    .... 
    .... 
    L1.delete(0, END) #clear listbox 
    for filename in get_filenames(): #populate listbox again 
     L1.insert(END, filename) 

代わりに再投入eveytimeの、唯一の最後の項目は、はるかに高速かつ効率的である加えます。

関連する問題