2017-12-05 13 views
-2

ユーザからデータを取得しようとしていて、GUIウィンドウを閉じて「Enter」をクリックした直後にデータを変数に保存します。しかし窓はそこにとどまります。データを保存するにはどうしたらいいですか?GUIウィンドウは同時に閉じることができますか?同時にデータを保存してTkinterウィンドウを閉じる

#pop up window 
def show_entry_fields(): 
    global ModelNumber,PowerOutput,SerialNumber 

    ModelNumber=e1.get() 
    PowerOutput=e2.get() 
    SerialNumber=e3.get() 

master = Tk() 
master.title("Model Information") 

master.geometry("500x300") 

master.iconbitmap("square.ico") 

Label(master, text="Model Information").grid(row=0,column=1) 
Label(master, text="Model Number ").grid(row=2) 
Label(master, text="Power Output (w)").grid(row=3) 
Label(master,text="Serial Number").grid(row=4) 


e1 = Entry(master) 
e2 = Entry(master) 
e3 = Entry(master) 


e1.grid(row=2, column=1) 
e2.grid(row=3, column=1) 
e3.grid(row=4, column=1) 


Button(master, text='Enter', command=show_entry_fields).grid(row=6, 
column=1, sticky=W, pady=4) 




mainloop() 
master.withdraw() 
+0

データを保存するという意味はありますか?ファイルをどこに保存しますか?閉じるとは、アプリケーション全体または特定のウィンドウを閉じることですか?投稿したコードはどのように関係していますか? – Nae

+0

今は 'master.withdraw()'を 'show_entry_fields'に移動するだけです。しかし、私はあなたの質問が不明であると信じています。 – Nae

答えて

3

を「入力」を押した直後に私は非常に疑問を理解していないん。両方の操作を行う関数を作成するだけです。

def save_and_quit() 
    show_entry_fields() 
    master.quit() 

... 
button = Button(master, text='Enter', command=save_and_quit) 
button.grid(row=6, column=1, sticky=W, pady=4) 
-3

これは私がやったことです。 それはshow_entry_fields機能(グローバル変数としてデータを保存している)内部にあり、それがGUIウィンドウの乗り心地を取得します私は

Button(master, text='Enter', command=lambda: [f() for f in [show_entry_fields, master.quit]]).grid(row=6, column=1, sticky=W, pady=4) 
+0

あなたがしていることは悪い習慣とみなされます。 'show_entry_fields'の中に' master.quit'を入れて、その機能を中断したくない場合は、代わりに他の両方の関数を呼び出す新しい関数を定義する必要があります。 – Nae

+2

このように 'lambda'を使わないことを強くお勧めします。それはあなたのコードを読み込み、理解、デバッグ、および保守することを本当に困難にします。適切な関数を作成します。あなたが絶対にそれを使用しなければ、 'lambda'を避けるべきです。この場合、 'lambda 'をまったく使用する必要はありません。それは価値を追加せずに複雑さを追加します。 –

関連する問題