Я пытаюсь получить данные от пользователя (используя wx.Choice), а затем на основе этого числа редактирую файл .py, чтобы редактировать содержимое каждого класса на основе выбранного числа
Iиметь графический интерфейс, настроенный с помощью wxpython, и у него есть три варианта.Раскрывающееся меню с номерами 1-5, текстовое поле заголовка и многострочное текстовое поле тела.Я могу успешно записать класс в файл при выборе числа, вводе заголовка и вводе текста, но если я выберу новый номер, он просто переписывает то, что я уже записал в текстовый файл, с новым текстом в графическом интерфейсе.
вот текстовые панели и поля:
self.numberChoices = ['1', '2', '3', '4', '5']
qnNumber_label = wx.StaticText(panel, label="Quicknote Number:", pos=(20, 30))
self.number_Control = wx.Choice(panel, pos=(140, 30), size=(50, -1), choices=self.numberChoices)
widgets.append(qnNumber_label)
widgets.append(self.number_Control)
# Quicknote title text panel creation
qnTitle_label = wx.StaticText(panel, label='Quicknote Title:', pos=(20, 60))
self.title_Control = wx.TextCtrl(panel, pos=(140, 60))
widgets.append(qnTitle_label)
widgets.append(self.title_Control)
# Quicknote body text panel creation
qnBody_label = wx.StaticText(panel, label='Quicknote Text:', pos=(20, 90))
self.body_Control = wx.TextCtrl(panel, style=wx.TE_MULTILINE, pos=(140, 90), size=(300, 200))
widgets.append(qnBody_label)
widgets.append(self.body_Control)
и они вызываются и пишутся здесь при нажатии кнопки сохранения:
quicknoteNumber = "class QN%s():" % self.number_Control.GetSelection()
quicknoteTitle = "\ttitle = '%s'" % self.title_Control.GetValue()
quicknoteBody = "\tnote = %s\n" % self.body_Control.GetValue().split("#")
ret = [quicknoteNumber, quicknoteTitle, quicknoteBody]
print ("\n".join(ret))
# print(ret)
file = open('config.py', 'w')
file.write("\n".join(ret))
file.close()
confirmation_text = 'Your quicknote was updated successfully!'
dlg = wx.MessageDialog(self, confirmation_text, 'Success', wx.OK) # wx.OK|wx.ICON_INFORMATION
result = dlg.ShowModal()
dlg.Destroy()
вотжелаемые результаты:
class QN0():
title = 'title'
note = ['a line of notes\nanother line of notes\none last line of notes']
class QN1():
title = 'title'
note = ['a line of notes\nanother line of notes\none last line of notes']
но вместо этого, когда я выбираю новый номер из выпадающего списка, он просто заменяет то, что я ранее записал в файл.В идеале мы хотели бы перезаписывать классы с одинаковым номером, поскольку это графический редактор для быстрых заметок.(например, если класс QN0 уже существует, когда я выбираю QN0 из раскрывающегося списка, он будет редактировать класс QN0 вместо того, чтобы переписать его во второй раз).