質問編集履歴

1

全体プログラムの追加、その他の修正依頼の追加

2019/12/10 21:33

投稿

help-me0042
help-me0042

スコア10

test CHANGED
@@ -1 +1 @@
1
- tkinterプログラムのコードの意味教えてほし
1
+ tkinterプログラムで検索機能付けた
test CHANGED
@@ -4,15 +4,15 @@
4
4
 
5
5
 
6
6
 
7
-
7
+ ```python
8
-
8
+
9
- #ファイルから呼び出し
9
+ コード #ファイルから呼び込み
10
10
 
11
11
  def button_clickld(self):
12
12
 
13
13
  if os.path.isfile(self.path) == False:
14
14
 
15
- self.Label1["text"] = u"ファイルが存在しません"
15
+ self.Label1["text"] = u"ファイルがありません"
16
16
 
17
17
  return
18
18
 
@@ -28,10 +28,14 @@
28
28
 
29
29
  self.pass_list = self.save_list[2]
30
30
 
31
- self.Label1["text"] = u"呼び出しました"
31
+ self.Label1["text"] = u"呼び込みました"
32
32
 
33
33
  self.save_list = []
34
34
 
35
+ ```
36
+
37
+
38
+
35
39
 
36
40
 
37
41
  このプログラムは何と言っているのでしょうか。
@@ -44,4 +48,348 @@
44
48
 
45
49
  フレームワークはtkinterです。
46
50
 
47
- 宜しくお願いします
51
+ 宜しくお願いします
52
+
53
+
54
+
55
+ 追記
56
+
57
+ 期待する動作
58
+
59
+ データベースに保存された情報を呼び出したいと考え作りました。
60
+
61
+ 実際の動作
62
+
63
+ 名前を入れるとデータベースから逆に引っ張ってこれるようなプログラムを組んだつもりでいたのですが(検索機能を付けたつもり)、実際にはデリートしたプログラムを復元するような動きになってしまっています。
64
+
65
+ どうしても検索機能を付けたいのですが、うまくいかず、、、
66
+
67
+ 知恵をお貸しいただきたいです。
68
+
69
+
70
+
71
+ 読み込むファイルはpickleを想定しているようですが、そのファイルを生成するために必要な方法についても記載をお願いします。
72
+
73
+ この部分のファイルを生成するために必要な方法という部分がよくわからず明記することができませんでした。
74
+
75
+ すみません
76
+
77
+ コード全文```python
78
+
79
+ import sys
80
+
81
+ import tkinter as tk
82
+
83
+ import pickle
84
+
85
+ import os
86
+
87
+
88
+
89
+ class Application(tk.Frame):
90
+
91
+ def __init__(self, master=None):
92
+
93
+ super().__init__(master)
94
+
95
+ self.grid()
96
+
97
+ self.create_widgets()
98
+
99
+ self.master.title(u"パスワード一覧")
100
+
101
+ self.master.geometry("512x512")
102
+
103
+ self.id_list = []
104
+
105
+ self.pass_list = []
106
+
107
+ self.save_list = []
108
+
109
+ self.path = os.path.join(os.path.dirname(__file__),'file_data.dat')
110
+
111
+
112
+
113
+ def create_widgets(self):
114
+
115
+ #リストボックス
116
+
117
+ self.ListBox1 = tk.Listbox(self,height=16,width=32)
118
+
119
+ self.ListBox1.grid(row=0,column=0,padx=5,pady=5,sticky=tk.N)
120
+
121
+ self.ListBox1.bind("<Delete>",self.Delete_press)
122
+
123
+ self.ListBox1.bind("<Shift-Delete>",self.Ins_press)
124
+
125
+ self.ListBox1.bind("<Double-1>",self.Show_press)
126
+
127
+ #スクロールバー
128
+
129
+ self.scrollbar1 = tk.Scrollbar(self,orient=tk.VERTICAL,command=self.ListBox1.yview)
130
+
131
+ self.ListBox1['yscrollcommand'] = self.scrollbar1.set
132
+
133
+ self.scrollbar1.grid(row=0,column=1,sticky=tk.W+tk.N+tk.S)
134
+
135
+ #入力ボックスフレーム
136
+
137
+ self.in_f = tk.Frame(self.master)
138
+
139
+ #入力ボックス1
140
+
141
+ self.Label2 = tk.Label(self.in_f,text=u'Name')
142
+
143
+ self.Label2.grid(row=0)
144
+
145
+ self.TextBox1 = tk.Entry(self.in_f,width=32)
146
+
147
+ self.TextBox1.grid(row=1)
148
+
149
+ #入力ボックス2
150
+
151
+ self.Label3 = tk.Label(self.in_f,text=u'ID')
152
+
153
+ self.Label3.grid(row=2)
154
+
155
+ self.TextBox2 = tk.Entry(self.in_f,width=32)
156
+
157
+ self.TextBox2.grid(row=3)
158
+
159
+ #入力ボックス3
160
+
161
+ self.Label4 = tk.Label(self.in_f,text=u'Password')
162
+
163
+ self.Label4.grid(row=4)
164
+
165
+ self.TextBox3 = tk.Entry(self.in_f,width=16)
166
+
167
+ self.TextBox3.grid(row=5)
168
+
169
+ #入力ボタン
170
+
171
+ self.Button1 = tk.Button(self.in_f,text=u'入力ボタン',width=20,command=self.button_clickin)
172
+
173
+ self.Button1.grid(row=6,pady=20)
174
+
175
+ #入力ボックスフレームの表示
176
+
177
+ self.in_f.grid(row=0,column=2)
178
+
179
+ #クリアボタン
180
+
181
+ self.Button4 = tk.Button(text=u'クリアボタン',width=20,command=self.button_clickcr)
182
+
183
+ self.Button4.grid(row=1,column=2,pady=5)
184
+
185
+ #保存ボタン
186
+
187
+ self.Button2 = tk.Button(text=u'保存ボタン',width=20,command=self.button_clicksv)
188
+
189
+ self.Button2.grid(row=2,column=0,pady=5)
190
+
191
+ #呼び込みボタン
192
+
193
+ self.Button3 = tk.Button(text=u'呼込ボタン',width=20,command=self.button_clickld)
194
+
195
+ self.Button3.grid(row=2,column=2,pady=5)
196
+
197
+ #パスワード作成ボタン
198
+
199
+ self.Button5 = tk.Button(text=u'パスワード作成',width=20,command=self.button_clickpw)
200
+
201
+ self.Button5.grid(row=3,column=2,pady=5)
202
+
203
+ #通知ラベル
204
+
205
+ self.Label1 = tk.Label(root,text=u'処理結果を表示します')
206
+
207
+ self.Label1.grid(row=4,pady=20,sticky=tk.W+tk.S)
208
+
209
+
210
+
211
+ #入力のクリア
212
+
213
+ def button_clickcr(self):
214
+
215
+ self.TextBox1.delete(0,tk.END)
216
+
217
+ self.TextBox2.delete(0,tk.END)
218
+
219
+ self.TextBox3.delete(0,tk.END)
220
+
221
+ self.TextBox1.focus_set()
222
+
223
+ self.Label1["text"] = u"入力クリアしました"
224
+
225
+
226
+
227
+ #パスワード作成
228
+
229
+ def button_clickpw(self):
230
+
231
+ self.TextBox3.delete(0,tk.END)
232
+
233
+ self.Val = pw.pass_make()
234
+
235
+ self.TextBox3.insert(tk.END,self.Val)
236
+
237
+ self.Label1["text"] = u"パスワードを作成しました"
238
+
239
+
240
+
241
+ #データ入力
242
+
243
+ def button_clickin(self):
244
+
245
+ self.Val = self.TextBox1.get()
246
+
247
+ if self.Val == '':
248
+
249
+ self.Label1["text"] = u"入力されていません"
250
+
251
+ return
252
+
253
+ self.ListBox1.insert(tk.END,self.Val)
254
+
255
+ self.Val = self.TextBox2.get()
256
+
257
+ self.id_list.append(self.Val)
258
+
259
+ self.Val = self.TextBox3.get()
260
+
261
+ self.pass_list.append(self.Val)
262
+
263
+ self.button_clickcr()
264
+
265
+ self.Label1["text"] = u"入力しました"
266
+
267
+
268
+
269
+ #ファイル保存
270
+
271
+ def button_clicksv(self):
272
+
273
+ self.save_list.append(list(self.ListBox1.get(0,tk.END)))
274
+
275
+ self.save_list.append(self.id_list)
276
+
277
+ self.save_list.append(self.pass_list)
278
+
279
+ with open(self.path,'wb') as file_a:
280
+
281
+ pickle.dump(self.save_list,file_a)
282
+
283
+ self.Label1["text"] = u"保存しました"
284
+
285
+ self.save_list = []
286
+
287
+
288
+
289
+ #ファイルから呼び込み
290
+
291
+ def button_clickld(self):
292
+
293
+ if os.path.isfile(self.path) == False:
294
+
295
+ self.Label1["text"] = u"ファイルがありません"
296
+
297
+ return
298
+
299
+ with open(self.path,'rb') as file_a:
300
+
301
+ self.save_list = pickle.load(file_a)
302
+
303
+ for N in self.save_list[0]:
304
+
305
+ self.ListBox1.insert(tk.END,N)
306
+
307
+ self.id_list = self.save_list[1]
308
+
309
+ self.pass_list = self.save_list[2]
310
+
311
+ self.Label1["text"] = u"呼び込みました"
312
+
313
+ self.save_list = []
314
+
315
+
316
+
317
+ #項目の削除
318
+
319
+ def Delete_press(self,event):
320
+
321
+ self.Val = self.ListBox1.index(tk.ACTIVE)
322
+
323
+ self.ListBox1.delete(self.Val,self.Val)
324
+
325
+ del self.id_list[self.Val]
326
+
327
+ del self.pass_list[self.Val]
328
+
329
+ self.Label1["text"] = u"指定場所を削除しました"
330
+
331
+
332
+
333
+ #項目の挿入
334
+
335
+ def Ins_press(self,event):
336
+
337
+ self.Val = self.ListBox1.index(tk.ACTIVE)
338
+
339
+ self.ins_Val = self.TextBox1.get()
340
+
341
+ self.ListBox1.insert(self.Val,self.ins_Val)
342
+
343
+ self.ins_Val = self.TextBox2.get()
344
+
345
+ self.id_list.insert(self.Val,self.ins_Val)
346
+
347
+ self.ins_Val = self.TextBox3.get()
348
+
349
+ self.pass_list.insert(self.Val,self.ins_Val)
350
+
351
+ self.button_clickcr()
352
+
353
+ self.Label1["text"] = u"挿入しました"
354
+
355
+
356
+
357
+ #項目の表示
358
+
359
+ def Show_press(self,event):
360
+
361
+ self.Val = self.ListBox1.index(tk.ACTIVE)
362
+
363
+ self.N = self.ListBox1.get(self.Val)
364
+
365
+ self.button_clickcr()
366
+
367
+ self.TextBox1.insert(tk.END,self.N)
368
+
369
+ self.TextBox2.insert(tk.END,self.id_list[self.Val])
370
+
371
+ self.TextBox3.insert(tk.END,self.pass_list[self.Val])
372
+
373
+ self.master.clipboard_clear()
374
+
375
+ self.master.clipboard_append(self.pass_list[self.Val])
376
+
377
+ self.Label1["text"] = u"表示しました"
378
+
379
+
380
+
381
+ #本体
382
+
383
+ if __name__ == '__main__':
384
+
385
+ root = tk.Tk()
386
+
387
+ app = Application(master=root)
388
+
389
+ app.mainloop()
390
+
391
+
392
+
393
+ コード
394
+
395
+ ```