Python3 クリックイベントの処理について

実現したいこと

データベースから値を読み取ってきて、テーブルとして画面に表示したい。
(ライブラリはthinkerを使用している)
プログラムをターミナル上から実行したら特にエラーは出なく実行でき、
データベースの値も問題なくテーブルのように画面に表示できる。
ここまでは問題なくできているが質問したいのはここからです。

⇒⇒
ボタンをクリックしたら、関数の中の処理ができるようにしたい

発生している問題・分からないこと

画面上の『画面を消す』という
ボタンを押すとwindowを閉じたい。ですが、この『画面を消す』ボタンを何度押しても
windowが消えず特に画面上変化がない。プログラムのどこがおかしいか教えてほしい。

該当のソースコード

Python3

1# モジュールのインポート 2import tkinter as tk 3import tkinter.ttk as ttk 4import sys 5sys.path.append('/home/pi/.local/lib/python3.7/site-packages') 6import psycopg2 7 8# データベースの接続 9 10conn = psycopg2.connect(host='~~~.~~.~~.~~', 11 port='5432', 12 user='postgres', 13 password='~~~', 14 dbname='~~~~~') 15 16# SELECT文の作成 17 18sql = "select aaa,generation_number from public.\"ID\"" 19 20# ルートフレームの作成 21 22root = tk.Tk() 23root.title('ユーザー名簿表示') 24root.geometry('600x600') 25 26# ツリービューの作成 27 28tree = ttk.Treeview(root, height=28) 29 30# 列インデックスの作成 31 32tree["columns"] = (1,2) 33 34# 表スタイルの設定(headingsはツリー形式ではない、通常の表形式) 35 36tree["show"] = "headings" 37 38# 各列の設定(インデックス,オプション(今回は幅を指定)) 39 40tree.column(1,width=300) 41tree.column(2,width=300) 42 43# 各列のヘッダー設定(インデックス,テキスト) 44 45tree.heading(1,text="~~") 46tree.heading(2,text="~~~~") 47 48# メインフレームの作成と設置 49 50frame = ttk.Frame(root) 51frame.pack(fill = tk.BOTH, padx=0,pady=5) 52 53# ボタンの配置 54 55btn1 = tk.Button(frame, text="画面を消す", font=("MSゴシック", "15"), command="btn5_click") 56 57# 各種ウィジェットの設置 58 59btn1.pack() 60 61cursor = conn.cursor() 62cursor.execute(sql) 63 64for r in cursor.fetchall(): 65 66 # ツリービューの要素に追加 67 68 tree.insert("","end",values=r) 69 70# ボタンイベントの追加 71def btn5_click(): 72window.close() 73 74# ツリービューの配置 75tree.pack(pady=0) 76 77root.mainloop() 78

試したこと・調べたこと

上記の詳細・結果

ネットでいろいろ調べてみたが、分からなかった。

補足

個人情報の観点から、秘密の部分は『~』と表現しています。

コメントを投稿

0 コメント