У меня есть кадр, который считывает данные из текстового файла и отображает их построчно. Каждая строка хранится в виде отдельной метки, и пользователь может щелкнуть эти метки. Если щелкнуть ярлык, он удаляется визуально со страницы, а также удаляется эта строка в текстовом файле.
Теперь я хочу сделать так, чтобы при нажатии на метку у пользователя была возможность либо отредактировать данные из текстового файла / метки, либо удалить строку, как раньше.
def newbooking():
def populate(frame2):
count = 0
removeLbl = Label(frame2,text='Click on the selected booking you wish to delete:',
font=('Courier',23),bg='#333333',fg='#CCCCCC')
removeLbl.grid(row=0,column=0)
#class to allow highlighting and deleting of displayed data
class HighlightLabel(Label):
def __init__(self,master=None,highlight='grey',lowlight=None,**kwargs):
super().__init__(master,**kwargs)
if lowlight is None:
lowlight = self['bg']
self.bind('<Enter>', lambda *args: self.config(bg=highlight))
self.bind('<Leave>', lambda *args: self.config(bg=lowlight))
self.bind('<Button-1>',self.deleteClick)
#function which stops the clicked label from being displayed
def deleteClick(self,*args):
if not deleteActiveBtn:
return
deleteLine(self['text'])
self.destroy()
deleteActiveBtn = True
#function which deletes clicked data from text file
def deleteLine(deleteData):
with open('Bookings.txt') as f:
oldFile = f.readlines()
with open('Bookings.txt','w') as f:
print(deleteData)
old1 =([[item for item in line.strip().split()] for line in oldFile])
for old1 in oldFile:
print(old1)
if old1 != (deleteData+"\n"):
f.write(old1)
elif old1 != (deleteData): #last line in file doesn't have \n
f.write(old1)
#displays the data from the text file in line by line format
with open('Bookings.txt','r+') as f:
bookings = ([[item for item in line.strip().split()] for line in f])
for booking in bookings:
bookingData = HighlightLabel(frame2,text=booking,width=60,anchor='w',bg='#333333',fg='#CCCCCC')
bookingData.grid(row=count,column=3)
count+=5
Прямо сейчас все работает нормально, но я за кнопкой? возможность редактирования или удаления, а также функциональность для редактирования данных.