質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

2587閲覧

python3 配列、sqlite3とtkinter連携 が学べる本やサイトがあれば教えて下さい。

zono_daiichi

総合スコア13

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/03 01:29

全くプログラミングを経験がない状態から、pythonの学習を始めて3ヶ月が経ちます。tkinterでのフォームはある程度、自分が思ったように配置ができるようになりました、ですが、自分でネットで調べながら勉強していて、なかなか前に進めない、消化不良の部分があり、是非、理解してもっと前に進みたいと思っています。

『分からない点』
① sqlite3とtkinterの出し入れ(splite3からデータをtkinterのリストボックスに読み込む)

user_id = [] for r in c.execute(sql): mylist.insert(tk.END,r[1] + " " + r[2]) user_id.append(r[0])

② tkinter の entryにsqlite3のデータを反映(配列のとらえ方?)

def

1 cur = c.cursor() 2 index = mylist.curselection()[0] 3 user_id2 = (user_id[index], ) 4 cur.execute('select * from user where id = ?', user_id2) 5 user_id3 = cur.fetchone() 6 entry1.delete(0,50) 7 entry1.insert(0, user_id3[0]) 8 entry2.delete(0,50) 9 entry2.insert(0, user_id3[1])

pythonのtkinter、sqlite3を連携させたものは何個か作っていますが、「この時はこう入力すればいいんだ」とパターンで覚えておいて、本来の意味を理解せずに現在に至っていて、応用が効かない自分がとてももどかしく、何か上記の内容が詳しく理解できるような『本』、『サイト』、『アドバイス』
がありましたら是非是非、教えていただけたら幸いです。

ちなみに、私が知りたい全体像を把握していただくために、作った物を以下に添付させていただきます。

import tkinter as tk import tkinter.ttk as ttk import sqlite3 import tkinter.messagebox as msg dbname = "text.db" c = sqlite3.connect(dbname) def select_bottun(): entry1.delete(0,tk.END) entry2.delete(0,tk.END) entry3.delete(0,tk.END) entry4.delete(0,tk.END) entry5.delete(0,tk.END) box1.delete(0,tk.END) box2.delete(0,tk.END) box3.delete(0,tk.END) box4.delete(0,tk.END) entry8.delete(0,tk.END) entry9.delete(0,tk.END) entry14.delete(0,tk.END) entry18.delete(0,tk.END) entry19.delete(0,tk.END) entry20.delete(0,tk.END) create_sql def quit_button(): root.destroy() def hello_info(): msg.showinfo("Say Hello", "Hello info") def create_sql(): c = sqlite3.connect("aozora.db") na1 = entry2.get() na2 = entry3.get() na3 = entry4.get() na4 = entry5.get() ci = box1.get() se1 = box2.get() se2 = box3.get() se3 = box4.get() si = entry8.get() kou = entry9.get() se4 = (se1+se2+se3) print (na1+na2+na3+na4+ci+se4+si+kou) try: c.execute(""" INSERT INTO user(姓,名,セイ,メイ,市町村,契約日,支給量,工賃単価) VALUES('{}','{}','{}','{}','{}','{}',{},{});""".format(na1,na2,na3,na4,ci,se4,si,kou)) c.execute("COMMIT;") text=("一件登録されました!") tk.messagebox.showinfo("info",text) except: text=("エラーにより登録できませんでした") tk.messagebox.showinfo("info",text) def get_list(nanikanyuuryoku): cur = c.cursor() index = mylist.curselection()[0] user_id2 = (user_id[index], ) cur.execute('select * from user where id = ?', user_id2) user_id3 = cur.fetchone() entry1.delete(0,50) entry1.insert(0, user_id3[0]) entry2.delete(0,50) entry2.insert(0, user_id3[1]) entry3.delete(0,50) entry3.insert(0, user_id3[2]) entry4.delete(0,50) entry4.insert(0, user_id3[3]) entry5.delete(0,50) entry5.insert(0, user_id3[4]) entry14.delete(0,50) entry14.insert(0, user_id3[5])#,state = "readonly") entry18.delete(0,50) entry18.insert(0, user_id3[6][0:4]) entry19.delete(0,50) entry19.insert(0, user_id3[6][4:6]) entry20.delete(0,50) entry20.insert(0, user_id3[6][6:8]) entry8.delete(0,50) entry8.insert(0, user_id3[7]) entry9.delete(0,50) entry9.insert(0, user_id3[8]) root = tk.Tk() root.resizable(0,0) root.title("福祉業務入力支援") root.geometry("680x720") status = tk.Label(root, text="from : maruti system ・・・ ",borderwidth=2,relief="ridge") status.pack(side=tk.BOTTOM, fill=tk.X) frame1 = tk.LabelFrame(root,bd=1,relief="sunken",text=" name ",height=600,foreground="purple") frame1.pack(side="left",anchor="nw",fill="x",padx=8,pady=2) scrollbar = tk.Scrollbar(frame1,bd=5,relief="sunken") scrollbar.pack(side="right",fill="y") frame2 = tk.LabelFrame(root,bd=1,relief="sunken",text=" manu ",width=600,height=100,foreground="purple") frame2.pack(side="top",anchor="n",fill="x",ipady=5,padx=2) label1 = tk.Label(frame2,text="利用者 ID",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label1.grid(row=1,column=1,padx=2,pady=2) entry1 = tk.Entry(frame2,text="",width=15,bg="light grey") entry1.grid(row=1,column=2,padx=2,ipady=5) frame3 = tk.LabelFrame(root,bd=1,relief="sunken",text=" start date of use ",width=600,height=100,foreground="purple") frame3.pack(side="top",fill="x",pady=5,padx=2) label9 = tk.Label(frame3,text="確認表示欄",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label9.grid(row=2,column=1,padx=2,pady=5) entry18= tk.Entry(frame3,text="",width=10,bg="light grey") entry18.grid(row=2,column=2,padx=2,ipady=5) label18= tk.Label(frame3,text="年",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label18.grid(row=2,column=3,padx=2,pady=5) entry19= tk.Entry(frame3,text="",width=10,bg="light grey") entry19.grid(row=2,column=4,padx=2,ipady=5) label19= tk.Label(frame3,text="月",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label19.grid(row=2,column=5,padx=2,pady=5) entry20= tk.Entry(frame3,text="",width=10,bg="light grey") entry20.grid(row=2,column=6,padx=2,ipady=5) label20= tk.Label(frame3,text="日",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label20.grid(row=2,column=7,padx=2,pady=5) label10 = tk.Label(frame3,text="利用開始日",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label10.grid(row=1,column=1,ipadx=10,pady=5) val = tk.StringVar() box2 = ttk.Combobox(frame3, values = (" ","2015","2016","2017","2018","2019","2020","2021"), textvariable=val, state='readonly',width=7,height=2) box2.current(0) #初期値を'(index=0)'に設定 box2.grid(row=1,column=2,padx=2,ipady=5) label12= tk.Label(frame3,text="年",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label12.grid(row=1,column=3,padx=2,pady=5) val = = tk.StringVar() box3 = ttk.Combobox(frame3, values = (" ","01","02","03","04","05","06","07","08","09","10","11","12"), textvariable=val, state='readonly',width=7,height=2) box3.current(0) #初期値を'(index=0)'に設定 box3.grid(row=1,column=4,padx=2,ipady=5) label14= tk.Label(frame3,text="月",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label14.grid(row=1,column=5,padx=2,pady=5) val = tk.StringVar() box4 = ttk.Combobox(frame3, values = (" ","01","02","03","04","05"), textvariable=val, state='readonly',width=7,height=2) box4.current(0) box4.grid(row=1,column=6,padx=2,ipady=5) label16= tk.Label(frame3,text="日",width=7,height=2,bd=1,relief="sunken",bg="ghost white") label16.grid(row=1,column=7,padx=2,pady=5) # 4th name Confirm input" < 姓 > < 名 > < セ イ > < メ イ > frame4 = tk.LabelFrame(root,bd=1,relief="sunken",text=" name Confirm input ",width=600,height=200,foreground="purple") frame4.pack(side="top",fill="x",pady=5,padx=2) label3 = tk.Label(frame4,text=" 姓 (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label3.grid(row=2,column=1,padx=2,pady=5) entry2 = tk.Entry(frame4,width=15,text="") entry2.grid(row=2,column=2,padx=2,ipady=5) label4 = tk.Label(frame4,text=" 名 (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label4.grid(row=2,column=3,padx=2,pady=5) entry3 = tk.Entry(frame4,text="",width=15) entry3.grid(row=2,column=4,padx=2,ipady=5) label5 = tk.Label(frame4,text=" セイ (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label5.grid(row=3,column=1,padx=2,pady=5) entry4 = tk.Entry(frame4,text="",width=15) entry4.grid(row=3,column=2,padx=2,ipady=5) label6 = tk.Label(frame4,text=" メイ (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label6.grid(row=3,column=3,padx=2,pady=5) entry5 = tk.Entry(frame4,text="",width=15) entry5.grid(row=3,column=4,padx=2,ipady=5) # 5th " other " < 市町村名 > < 支給量 > < 工賃単価 > frame5= tk.LabelFrame(root,bd=1,relief="sunken",text=" other ",width=600,height=100,foreground="purple") frame5.pack(side="top",fill="x",pady=5,padx=2) label17 = tk.Label(frame5,text=" 市町村名 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label17.grid(row=1,column=1,padx=2,pady=5) val = tk.StringVar() box1 = ttk.Combobox(frame5,values = (" ","熊本","鹿児島","宮崎"), textvariable=val, state='readonly',width=12,height=2) box1.current(0) box1.grid(row=1,column=2,padx=5,ipady=5) label17 = tk.Label(frame5,text="確認表示欄 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label17.grid(row=1,column=3,padx=2,pady=5) entry14 = tk.Entry(frame5,text="",width=15,bg="light grey") entry14.grid(row=1,column=4,padx=2,ipady=5) label17 = tk.Label(frame5,text=" 支給量 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label17.grid(row=2,column=1,padx=2,pady=5) entry8 = tk.Entry(frame5,text="",width=15) entry8.grid(row=2,column=2,padx=2,ipady=5) label17 = tk.Label(frame5text=" 工賃単価 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white") label17.grid(row=3,column=1,padx=2,pady=5) entry9 = tk.Entry(frame5,text="",width=15) entry9.grid(row=3,column=2,padx=2,ipady=5) frame7 = tk.LabelFrame(root,bd=1,relief="sunken",text=" edit ",width=600,height=100,foreground="purple") frame7.pack(side="top",fill="x",pady=5,padx=5) button2 = tk.Button(frame7,text="追 加",width=10,height=2,bg="lightgray",command=select_bottun) button2.pack(side="left",padx=2,pady=5) button3 = tk.Button(frame7,text="更 新",width=10,height=2,bg="lightgray",command=create_sql) button3.pack(side="left",padx=2,pady=5) mylist = tk.Listbox(frame1,yscrollcommand = scrollbar.set,height=600) mylist.insert(0) mylist.pack(side="left",fill="both") scrollbar.config(command = mylist.yview) frame8 = tk.LabelFrame(root,bd=1,relief="sunken",text=" end ",width=600,height=100,foreground="purple") frame8.pack(side="top",fill="x",pady=5,padx=5) label18 = tk.Label(frame8,text=" 項目 (*) は 必須 !",width=20,height=2,bd=1) label18.pack(side="left",padx=5,pady=5) button4 = tk.Button(frame8,text="終 了",width=10,height=2,bg="lightgray",command=quit_button) button4.pack(side="right",padx=5,pady=5) sql = """ SELECT * FROM user order by セイ """ user_id = [] for r in c.execute(sql): mylist.insert(tk.END,r[1] + " " + r[2]) user_id.append(r[0]) mylist.bind("<ButtonRelease-1>",get_list) root.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問