

目的として、GUI画からテキストボックスに入力されて値を取得して、CSVファイルに書き込みすることです。画面のソースファイル（sample_tkinter.py）とCSVに書き込むためのソースファイル（merge.py）で構成しています。  
現状`word1`に値を代入するところまでできていますが、  
画面の右上にある×ボタン（ウインドウを閉じるボタン）を押すと、テキストボックスの値を取得することができるのですが、こちらで作成した「閉じる」ボタンを押すと、値を取得することができません。「閉じる」ボタンを押してもCSVに書き込みがされていません。値が取得できていないのか、取得はできているが処理が途中なのかわからないので、方法を知りたいです。

**sample_tkinter.py**

[code]

    import tkinter as tk
    import sys
    
    def finish_menu():
        sys.exit()
    
    root=tk.Tk()
    root.geometry("300x300")
    
    entry=tk.Entry()
    entry.place(x=20,y=30)
    
    button=tk.Button(text="OK")
    button.place(x=150,y=29)
    
    word1=""    
    def click():
        global word1
        word1=entry.get()
       
        label=tk.Label(text="確定しました")
        label.place(x=20,y=50)
    
    button["command"]=click
    
    Label_Blanc = tk.Label(root, text=u'')
    Label_Blanc.grid(row=50,column=50)
    finish_menu_Button = tk.Button(root, text=u'閉じる')
    finish_menu_Button["command"] = finish_menu
    finish_menu_Button.place(x=30,y=60)
    
    
    root.mainloop()
    
[/code]

**merge.py**

[code]

    import csv
    
    from sample_tkinter import word1
    
    with open("sample.csv","w",encoding="shift-jis")as csvfile:
        writer=csv.writer(csvfile,lineterminator="\n")
        
        writer.writerow([word1])
    print(word1)
    
[/code]


CC BY-SA 4.0
2022-08-16T05:35:23.327
90579
2022-08-16T06:19:26.247
2022-08-16T05:40:52.220
53752
53752
question
python csv tkinter
tkinterの×ボタン（ウインドウを閉じるボタン）と自ら作成した閉じるボタンの動きがわからない


`merge.py`から`sample_tkinter.py`を呼び出した場合に`word1`の内容が表示されないのは、[`sys.exit`](https://docs.python.org/ja/3.7/library/sys.html)でPythonの処理自体を終了していることが原因です。  
ご質問のコードでは`print(word1)`が実行されません。

下記のように`finish_menu`関数から`tkinter.Tk#destroy`を呼び出すよう書き換えてください。  
`destroy`については、公式ドキュメントの[A Hello World
Program](https://docs.python.org/ja/3/library/tkinter.html#a-hello-world-
program)で触れられています。

[code]

    def finish_menu():
        # sys.exit()
        root.destroy()
    
[/code]

実証に使用した下記のサンプルコードも参考になるかもしれません。

**サンプルコード**

[code]

    import tkinter as tk
    import sys
    
    root=tk.Tk()
    root.geometry("300x100")
    
    # sys.exit() を呼び出すボタン
    button_exit=tk.Button(text="Exit", command=sys.exit)
    button_exit.place(x=0,y=0)
    
    # root.destroy() を呼び出すボタン
    button_destroy=tk.Button(text="Destroy", command=root.destroy)
    button_destroy.place(x=150,y=0)
    
    root.mainloop()
    
    # sys.exitした場合はmainloopでpythonを終了する
    # root.destroyした場合はwindowを閉じてmainloopを終了するだけなので、下の処理も継続して実行する
    
    print("Exitボタンでは表示されない")
    
[/code]


CC BY-SA 4.0
2022-08-16T06:13:46.793
90580
2022-08-16T06:19:26.247
2022-08-16T06:19:26.247
9820
9820
90579
answer