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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

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

Q&A

0回答

2430閲覧

python、Tkinterでの検索機能のサンプルコードが見つからない

help-me0042

総合スコア10

Tkinter

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

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

0グッド

0クリップ

投稿2019/12/11 05:53

編集2019/12/11 05:53

ググってみたのですが、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コード

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

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

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

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

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

t_obara

2019/12/11 06:02

まずは、tkinterとは無関係に、DBにアクセスしてデータを取得するようなものを作ってみてはいかがでしょうか。その点は問題ないのでしょうか?
help-me0042

2019/12/11 06:07

はい。 以前MySQLとCentOSを使い簡単なものは作ったことがあります。 なのでデータベースに関してはある程度分かっているつもりです。 宜しくお願いします。
t_obara

2019/12/11 06:12

じゃぁ、どの部分が具体的にわからないのでしょう? DBを検索するコードが作れるのであれば、UIからテキストを取得して、そのテキストを検索するコードに渡せば良いと思います。その過程の中で、具体的に何ができないのかご提示ください。ご提示いただいたコードは長すぎるので、もっとシンプルにやりたいことだけを試すコードにしてみると良いと思います。
help-me0042

2019/12/11 07:25

自分の中で整理するとMySQLのテーブルを作り抽出できる。 が依然作ったときはVMwereで作成。 今のプログラムはvisualstudioで作成。 UIからテキストを取得とは、ファイルを作成保存し、そのファイルをimportするということでしょうか? そのテキストを検索するコードに渡せば良いと思います。 というのがぴんと来ていません。 返信遅くなりすみません、宜しくお願いします
t_obara

2019/12/12 03:46

UIからテキストを取得: Entryオブジェクトからユーザーが入力したテキストを取得
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問