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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

Q&A

0回答

1036閲覧

PythonにおけるGUIを用いた名前、年齢リストにおける削除機能の追加

Righm

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

0グッド

0クリップ

投稿2021/06/29 18:27

前提・実現したいこと

PythonでGUIを用いて名前、年齢をリストに登録、削除、検索、ソートすることができるようにしたい。そのために現在csvに登録した名前、年齢を保存している。

発生している問題・エラーメッセージ

現在リストボックスの削除ボタンの内容が上手く動かず、リストの削除ができない。

該当のソースコード

Python

1import tkinter as tk 2import tkinter.messagebox as tkm 3import csv 4 5root = tk.Tk() 6root.title("title") 7root.geometry("960x480") 8 9 10#データ(リストボックスに表示させる) 11f = open('登録リスト.csv', 'r') 12data = f.read() 13list_value=tk.StringVar() 14list_value.set(data) 15f.close 16 17#リストボックスの作成 #selectmodeの種類extended:複数選択可能+ドラッグでも選択可能) 18listbox=tk.Listbox(root,listvariable=list_value,selectmode="extended") 19listbox.pack() 20listbox.place(x=650,y=50,width=200,height=300) 21 22#スクロールバーの作成 23scroll=tk.Scrollbar(listbox) 24 25#スクロールバーの配置を決める 26scroll.pack(side=tk.RIGHT,fill="y") 27 28#部品の動きをスクロールバーに反映させる 29scroll["command"]=listbox.yview 30 31 32# 名前ラベルの生成 33label = tk.Label(root, text='名前', 34 font=('', 20), 35 foreground='#000000') 36label.place(x=20, y=100, width=200, height=40) 37 38# 年齢ラベルの生成 39label = tk.Label(root, text='年齢', 40 font=('', 20), 41 foreground='#000000') 42label.place(x=20, y=200, width=200, height=40) 43 44 45# 名前のテキストフィールドの生成 46box1 = tk.Entry(root) 47box1.pack() 48box1.place(x=240, y=100, width=170, height=40) 49 50# 名前のテキストフィールドの生成 51box2 = tk.Entry(root) 52box2.pack() 53box2.place(x=240, y=200, width=170, height=40) 54 55# 検索のテキストフィールドの生成 56box3 = tk.Entry(root) 57box3.pack() 58box3.place(x=650, y=390, width=150, height=40) 59 60#登録ボタンのアクション 61def button_action1(self): 62 self.msg1 = box1.get() 63 self.msg2 = box2.get() 64 self.text ="" 65 66 if self.msg1 == "": 67 self.text += "名前を入れてください" 68 69 elif self.msg2 == "": 70 self.text += "年齢を入れてください" 71 72 elif self.msg2 == "": 73 self.text += "適切な年齢を入れてください" 74 75 else: 76 self.text = self.msg1+'さん'+self.msg2+'歳'.format(self.msg1,self.msg2) 77 f = open('登録リスト.csv','a') 78 f.write(self.msg1 + "," + self.msg2 + "\n") 79 box1.delete(0,tk.END) 80 box2.delete(0,tk.END) 81 listbox.insert(tk.END,self.msg1 + "," + self.msg2 + "\n") 82 83 tkm.showinfo('登録結果',self.text) 84 85#削除ボタンのアクション 86def button_action2(self): 87 selectedIndex = tk.ACTIVE 88 listbox.delete(selectedIndex) 89 90 91#名順ボタンのアクション 92def button_action3(self,event): 93 selectedIndex = tk.ACTIVE 94 listbox.delete(selectedIndex) 95 96 97#年順ボタンのアクション 98def button_action4(self,event): 99 selectedIndex = tk.ACTIVE 100 listbox.delete(selectedIndex) 101 102 103#検索ボタンのアクション 104def button_action5(self,event): 105 self.msg3 = box3.get() 106 self.msg3 in listbox 107 listbox.select_set(0,tk.END) 108 109 110# 登録ボタンの生成 111btn = tk.Button(root, text='登録') 112btn.bind("<Button-1>",button_action1) 113btn.place(x=200, y=300, width=50, height=40) 114 115#リストの削除ボタンの生成 116btn_delete=tk.Button(root,text="削除") 117btn_delete.bind("<Button-2>",button_action2) 118btn_delete.place(x=650, y=350, width=50, height=40) 119 120#リストの名順ソートボタンの生成 121btn_delete=tk.Button(root,text="名順") 122btn_delete.bind("<Button-3>",button_action3) 123btn_delete.place(x=700, y=350, width=50, height=40) 124 125#リストの年齢順ソートボタンの生成 126btn_delete=tk.Button(root,text="年順") 127btn_delete.bind("<Button-4>",button_action4) 128btn_delete.place(x=750, y=350, width=50, height=40) 129 130#リストの年齢順ソートボタンの生成 131btn_delete=tk.Button(root,text="検索") 132btn_delete.bind("<Button-5>",button_action5) 133btn_delete.place(x=800, y=390, width=50, height=40) 134 135 136root.mainloop()

試したこと

補足情報(FW/ツールのバージョンなど)

Python 3,8,3

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問