ググってみたのですが、DBへの登録、閲覧、検索が可能なサンプルコードが全く見つからず質問しました。
作りたいものは簡易的な住所録のようなもので、上記3つくらいの機能があれば御の字のプログラムです。
とても切羽詰まっていて、困っています。
Tkinterでこのようなプログラムを書いたのですが、検索機能がつけれずあたふたしています。
どなたかこう検索すればいいよや、サンプルコードを載せていただきたいです。
一番良いのは以下のプログラムに検索機能を追加できること
二番目に簡易的なサンプルコードを見つける、もしくは作ることができるです。
編集依頼はすぐ対応しますので、どうかよろしくお願いします。
以下コード全文
python
1import sys 2import tkinter as tk 3import pickle 4import os 5 6class Application(tk.Frame): 7 def __init__(self, master=None): 8 super().__init__(master) 9 self.grid() 10 self.create_widgets() 11 self.master.title(u"パスワード一覧") 12 self.master.geometry("512x512") 13 self.id_list = [] 14 self.pass_list = [] 15 self.save_list = [] 16 self.path = os.path.join(os.path.dirname(__file__),'file_data.dat') 17 18 def create_widgets(self): 19 #リストボックス 20 self.ListBox1 = tk.Listbox(self,height=16,width=32) 21 self.ListBox1.grid(row=0,column=0,padx=5,pady=5,sticky=tk.N) 22 self.ListBox1.bind("<Delete>",self.Delete_press) 23 self.ListBox1.bind("<Shift-Delete>",self.Ins_press) 24 self.ListBox1.bind("<Double-1>",self.Show_press) 25 #スクロールバー 26 self.scrollbar1 = tk.Scrollbar(self,orient=tk.VERTICAL,command=self.ListBox1.yview) 27 self.ListBox1['yscrollcommand'] = self.scrollbar1.set 28 self.scrollbar1.grid(row=0,column=1,sticky=tk.W+tk.N+tk.S) 29 #入力ボックスフレーム 30 self.in_f = tk.Frame(self.master) 31 #入力ボックス1 32 self.Label2 = tk.Label(self.in_f,text=u'Name') 33 self.Label2.grid(row=0) 34 self.TextBox1 = tk.Entry(self.in_f,width=32) 35 self.TextBox1.grid(row=1) 36 #入力ボックス2 37 self.Label3 = tk.Label(self.in_f,text=u'ID') 38 self.Label3.grid(row=2) 39 self.TextBox2 = tk.Entry(self.in_f,width=32) 40 self.TextBox2.grid(row=3) 41 #入力ボックス3 42 self.Label4 = tk.Label(self.in_f,text=u'Password') 43 self.Label4.grid(row=4) 44 self.TextBox3 = tk.Entry(self.in_f,width=16) 45 self.TextBox3.grid(row=5) 46 #入力ボタン 47 self.Button1 = tk.Button(self.in_f,text=u'入力ボタン',width=20,command=self.button_clickin) 48 self.Button1.grid(row=6,pady=20) 49 #入力ボックスフレームの表示 50 self.in_f.grid(row=0,column=2) 51 #クリアボタン 52 self.Button4 = tk.Button(text=u'クリアボタン',width=20,command=self.button_clickcr) 53 self.Button4.grid(row=1,column=2,pady=5) 54 #保存ボタン 55 self.Button2 = tk.Button(text=u'保存ボタン',width=20,command=self.button_clicksv) 56 self.Button2.grid(row=2,column=0,pady=5) 57 #呼び込みボタン 58 self.Button3 = tk.Button(text=u'呼込ボタン',width=20,command=self.button_clickld) 59 self.Button3.grid(row=2,column=2,pady=5) 60 #パスワード作成ボタン 61 self.Button5 = tk.Button(text=u'パスワード作成',width=20,command=self.button_clickld) 62 self.Button5.grid(row=3,column=2,pady=5) 63 #通知ラベル 64 self.Label1 = tk.Label(root,text=u'処理結果を表示します') 65 self.Label1.grid(row=4,pady=20,sticky=tk.W+tk.S) 66 67 #入力のクリア 68 def button_clickcr(self): 69 self.TextBox1.delete(0,tk.END) 70 self.TextBox2.delete(0,tk.END) 71 self.TextBox3.delete(0,tk.END) 72 self.TextBox1.focus_set() 73 self.Label1["text"] = u"入力クリアしました" 74 75#パスワード作成 76 #データ入力 77 def button_clickin(self): 78 self.Val = self.TextBox1.get() 79 if self.Val == '': 80 self.Label1["text"] = u"入力されていません" 81 return 82 self.ListBox1.insert(tk.END,self.Val) 83 self.Val = self.TextBox2.get() 84 self.id_list.append(self.Val) 85 self.Val = self.TextBox3.get() 86 self.pass_list.append(self.Val) 87 self.button_clickcr() 88 self.Label1["text"] = u"入力しました" 89 90 #ファイル保存 91 def button_clicksv(self): 92 self.save_list.append(list(self.ListBox1.get(0,tk.END))) 93 self.save_list.append(self.id_list) 94 self.save_list.append(self.pass_list) 95 with open(self.path,'wb') as file_a: 96 pickle.dump(self.save_list,file_a) 97 self.Label1["text"] = u"保存しました" 98 self.save_list = [] 99 100 #ファイルから呼び込み 101 def button_clickld(self): 102 if os.path.isfile(self.path) == False: 103 self.Label1["text"] = u"ファイルがありません" 104 return 105 with open(self.path,'rb') as file_a: 106 save_list = pickle.load(file_a) 107 self.ListBox1.delete(0, tk.END) #<- 追加 108 for N in save_list[0]: 109 self.ListBox1.insert(tk.END, N) 110 self.id_list = save_list[1] 111 self.pass_list = save_list[2] 112 self.Label1["text"] = u"呼び込みました" 113 114 #項目の削除 115 def Delete_press(self,event): 116 self.Val = self.ListBox1.index(tk.ACTIVE) 117 self.ListBox1.delete(self.Val,self.Val) 118 del self.id_list[self.Val] 119 del self.pass_list[self.Val] 120 self.Label1["text"] = u"指定場所を削除しました" 121 122 #項目の挿入 123 def Ins_press(self,event): 124 self.Val = self.ListBox1.index(tk.ACTIVE) 125 self.ins_Val = self.TextBox1.get() 126 self.ListBox1.insert(self.Val,self.ins_Val) 127 self.ins_Val = self.TextBox2.get() 128 self.id_list.insert(self.Val,self.ins_Val) 129 self.ins_Val = self.TextBox3.get() 130 self.pass_list.insert(self.Val,self.ins_Val) 131 self.button_clickcr() 132 self.Label1["text"] = u"挿入しました" 133 134 #項目の表示 135 def Show_press(self,event): 136 self.Val = self.ListBox1.index(tk.ACTIVE) 137 self.N = self.ListBox1.get(self.Val) 138 self.button_clickcr() 139 self.TextBox1.insert(tk.END,self.N) 140 self.TextBox2.insert(tk.END,self.id_list[self.Val]) 141 self.TextBox3.insert(tk.END,self.pass_list[self.Val]) 142 self.master.clipboard_clear() 143 self.master.clipboard_append(self.pass_list[self.Val]) 144 self.Label1["text"] = u"表示しました" 145 146#本体 147if __name__ == '__main__': 148 root = tk.Tk() 149 app = Application(master=root) 150 app.mainloop() 151コード
あなたの回答
tips
プレビュー