確認ボタンを押してコンボボックスで選択した時刻を思い出させるリマインダを作成します。私はラベルに時間を入れて、同じ行のラベルとボタン自体をループで削除できる削除ボタンを作成します。ラベルが1つしかない場合には機能しますが、ラベルの数を増やすと、最後のラベルとボタンが破棄されます。以下Tkinter破棄ボタンがループで作成される
は私のコードです:
class final:
def __init__(self,app):
self.savelist=[]
self.time= StringVar()
self.timecombo = ttk.Combobox(app,textvariable=self.time)
self.timecombo.grid(row=0,column=1)
self.timecombo.config(value =('1:00','2:00','3:00','4:00','5:00','6:00','7:00','8:00','9:00','10:00','11:00','12:00'))
self.button1=Button(app,text='confirmed',command=self.save)
self.button1.grid(row=3,column=2)
***def save(self):
savetext = self.time.get()
self.savelist.append(savetext)
self.deletebutton_list = []
self.savelabel_list = []
for i in range(len(self.savelist)):
savelabel = Label(app, text=self.savelist[i])
savelabel.grid(row=4 + i, column=0)
self.savelabel_list.append((savelabel))
deletebutton = Button(app, text='delete' , command=functools.partial(self.deletelabel,idx=i))
deletebutton.grid(row=4 + i, column=1)
self.deletebutton_list.append(deletebutton)
def deletelabel(self, idx):
self.savelabel_list[idx].destroy()
self.deletebutton_list[idx].destroy()
self.savelist.remove(self.savelist[idx])
self.savelabel_list.remove(self.savelabel_list[idx])
self.deletebutton_list.remove(self.deletebutton_list[idx])***
app = Tk()
a = final(app)
app.title('things to do')
app.geometry("500x300+200+200")
app.mainloop()
私はそこにループや関数deletelabelで何か間違っている必要がありますが、私はまだそれを修正することはできませんと信じていました。
お返事ありがとうございますが、お勧めの列を削除しても目標は達成できませんし、私はPythonで新しいです。あなたは私のためのコードを書くことができますか?どうも。 –
と私はすでにあなたが言及した問題をfunctools.partialを使って解決していると思います。なぜなら、クリックした後にラベル/ボタンのリストがリスト内に正しく表示されるからです。 –