Пример изображения
Я пытаюсь решить вариант сохранения, но моя проблема заключается в том, что когда я нажимаю кнопку сохранения, если файл не существует, он должен отображать диалоговое окно, в котором запрашивается путь / имя файла, а затем сохраняется файл.
Хочу, чтобы он работал так:
1) Откройте новый файл и напишите содержимое (Готово) .
2) Сохраните «если это новый файл, диалоговое окно должно появиться» .
3) снова нажмите «Сохранить». «Если файл уже существует, это означает, что диалоговое окно должно исчезнуть, а файл необходимо обновить.
С уважением и уважением,
Д. Виней Сингх
def onSaveAs(self, event):
dlg = wx.FileDialog(self, "Save to file:", ".", "", "Text (*.txt)|*.txt", wx.FD_SAVE)
if dlg.ShowModal() == wx.ID_OK:
i = dlg.GetFilterIndex()
if i == 0: # Text format
try:
f = open(dlg.GetPath(), "w")
print(f)
hole = self.txt.GetValue()
print(hole)
f.write(hole)
except:
print("Hello")
def onSave(self, event):
pathtxt = self.txt_1.GetValue()
f = open(pathtxt,"w")
hole_1 = self.txt.GetValue()
f.write(hole_1)






Попробуй это:
import os
def onSave(self, event):
try:
f = open(os.path.join(self.dirname, self.filename), 'w')
f.write(self.control.GetValue())
f.close()
except:
try:
dlg = wx.FileDialog(self, "Save to file:", ".", "", "Text (*.txt)|*.txt", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if (dlg.ShowModal() == wx.ID_OK):
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname, self.filename), 'w')
f.write(self.control.GetValue())
f.close()
dlg.Destroy()
except:
pass
def onSaveAs(self, event):
try:
dlg = wx.FileDialog(self, "Save to file:", ".", "", "Text (*.txt)|*.txt", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if (dlg.ShowModal() == wx.ID_OK):
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname, self.filename), 'w')
f.write(self.control.GetValue())
f.close()
dlg.Destroy()
except:
pass
Примечание: self.filename и self.dirname должны быть инициированы и отслеживаться постоянно.
Прежде чем использовать код, назначьте self.filename = '' и self.dirname = '' в вашем __ init __ и импортируйте os
@altarawy Я поддержал ваш ответ, но вам нужно установить self.filename в конце обоих диалогов и, возможно, добавить примечание к ответу, что self.filename необходимо запускать и отслеживать постоянно.
Попробуйте что-то вроде этого:
Примечание: я не тестировал
def onSave(self, event):
pathtxt = self.txt_1.GetValue()
if pathtxt != "":
if not pathtxt.endswith('.txt'):
pathtxt=pathtxt+'.txt'
try:
with open(pathtxt, 'w') as f:
f.write(self.txt.GetValue())
except:
try:
dlg = wx.FileDialog(self, "Save to file:", ".", "", "Text (*.txt)|*.txt", wx.FD_SAVE)
if dlg.ShowModal() == wx.ID_OK:
i = dlg.GetFilterIndex()
if i == 0: # Text format
try:
with open(dlg.GetPath(), 'w') as f:
f.write(self.txt.GetValue())
except:
print("Save failed")
else:
print("Save failed - Use .txt file suffix")
except:
print("Save failed - Unknown reason")
Здравствуйте, altarawy, спасибо, что дали ответ, но я обновляю свой контент и добавляю изображение. Ваше решение не решает мою проблему. Спасибо, хорошего дня