テキストボックスに入力した値をDBに登録したいです。
使用しているDBはPostgreSQLです。
エラー内容は下記になります。
AttributeError: '_tkinter.tkapp' object has no attribute 'txt1'
この画面をクラスにする前は登録できていたのですが、
画面をクラスにしてみたら登録できなくなりました。
画面やコントロールは問題なく表示されています。
def create_sql(self):
id = self.master.txt1.get()
name = self.master.txt2.get()
kana = self.master.txt3.get()
上記でテキストボックスの値が取れていないのが原因だと思うのですが、改善できません。
id = self.master.txt1.get()書き方が間違っていると思いますが、、、
def create_widgets(self):の
txt1,txt2,txt3の値を上記で受け取れる方法を教えて下さい。
また、おかしなところがあれば教えてください。
import tkinter import tkinter as tk from tkinter import font from tkinter import messagebox import psycopg2 # connect postgreSQL conn = psycopg2.connect(必要な情報) class toroku(tkinter.Frame): def __init__(self,master): super().__init__(master) self.pack() self.master.geometry("800x480") self.master.title("AAA") self.create_widgets() # 最初の画面に戻る def return_view(self): self.master.destroy() def create_sql(self): # Entryウィジェットのテキストを読み取るgetメソッド id = self.master.txt1.get() name = self.master.txt2.get() kana = self.master.txt3.get() # SQLを発行してDBへ登録 try: cur = conn.cursor() cur.execute(""" INSERT INTO gs_sys(id,name,kana) VALUES('{}','{}','{}'); """.format(id, name, kana)) cur.execute("COMMIT;") messagebox.showinfo("メッセージ", "1件の情報を登録しました") print("1件登録しました") # ドメインエラーなどにより登録できなかった場合のエラー処理 except: print("エラーにより登録できませんでした") # Create Widgets function def create_widgets(self): # ラベル作成 font1 = font.Font(self.master, size=10) LBL_1 = tkinter.Label(self.master, text='ID:', font=font1) LBL_1.place(x=40, y=30) # ラベルを配置する位置の設定 LBL_2 = tkinter.Label(self.master, text='名:', font=font1) LBL_2.place(x=40, y=70) # ラベルを配置する位置の設定 LBL_3 = tkinter.Label(self.master, text='よみ:', font=font1) LBL_3.place(x=40, y=110) # ラベルを配置する位置の設定 # テキストボックス txt1 = tkinter.Entry(self.master, width=30) # ID txt1.place(x=140, y=30) txt2 = tkinter.Entry(self.master, width=30) # 名 txt2.place(x=140, y=70) txt3 = tkinter.Entry(self.master, width=30) # 名(よみ) txt3.place(x=140, y=110) # ボタン作成 toroku_btn = tkinter.Button(self.master, text='登録', width=8, command=self.create_sql) # ボタン設定(text=ボタンに表示するテキスト) toroku_btn.place(x=630, y=440) # ボタンを配置する位置の設定 btn_end = tkinter.Button(self.master, text='閉じる', width=8, command=self.return_view) # ボタン設定(text=ボタンに表示するテキスト) btn_end.place(x=710, y=440) def main(): root = tk.Tk() app = toroku(master=root) app.mainloop() if __name__ == "__main__": main()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 01:24