Я пишу пользовательский интерфейс для приложения python с wxPython. Я обрабатываются несколько функций от х, но мне нужна помощь с OnNew и OnSave/SaveAswxPython Новые, Save и SaveAs методы
Вот мой Сохранить и SaveAs код:
def OnSave(self, event):
self.dirname = ""
saveFileDialog = wx.FileDialog(self, "Save Operation File", self.dirname, "",
"Operation Files (*.fwr)|*.fwr|All Files (*.*)|*.*", wx.SAVE|wx.OVERWRITE_PROMPT)
if saveFileDialog.ShowModal() == wx.ID_OK:
contents = self.control.GetValue()
self.filename = saveFileDialog.GetFilename()
self.dirname = saveFileDialog.GetDirectory()
filehandle = open(os.path.join(self.dirname, self.filename), 'w')
filehandle.write(contents)
filehandle.close()
else:
sys.exit(1)
saveFileDialog.Destroy()
def OnSaveAs(self, event):
self.dirname = "";
saveAsFileDialog = wx.FileDialog(self, "Save Operation File As", self.dirname, "",
"Operation Files (*.fwr)|*.fwr|All Files (*.*)|*.*",
wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if saveAsFileDialog.ShowModal() == wx.ID_OK:
contents = self.control.GetValue()
self.filename = saveFileDialog.GetFilename()
self.dirname = saveFileDialog.GetDirectory()
filehandle = open(os.path.join(self.dirname, self.filename), 'w')
filehandle.write(contents)
filehandle.close()
else:
sys.exit(1)
saveFileDialog.Destroy()
# save current contents in the file
# use wxPython output streams
#output_stream = wx.FileOutputStream(saveFileDialog.GetPath())
#if not output_stream.IsOk():
# wx.LogError("Cannot save contents of Operations File '%s'" % saveFileDialog.GetPath())
# return
комментируемого часть в нижней части другой способ я нашел для этого используется поток ввода и вывода более корректным, чем тот, который он сейчас представляет? Также Heres другой мой вопрос, я получил OnNew Working, вот код:
def OnNew(self, event):
homedir = os.environ['HOME']
if not os.path.exists(homedir):
if getpass.getuser():
homedir = "C:/Users/" + getpass.getuser() + "/"
else:
homedir = "C:/"
newFileDialog = wx.FileDialog(self, "New Operation File", homedir, "",
"Operation Files (*.fwr)|*.fwr|All Files|(*.*)|*.*", wx.FD_CREATE|wx.OVERWRITE_PROMPT)
Все отлично, но метод OnOpen открывает диалог открытого файла, я хочу создать файл диалоговое окно (это было бы то же самое, как сохранить ? Может ли кто-нибудь дать мне пример метода OnOpen и дать мне некоторое представление о моих методах OnSave и OnSaveAs? Как вы можете видеть, есть три подхода: один в OnSaveAs, один в OnSave и один из них прокомментирован в нижней части OnSaveAs() Как и многие другие, я не писал здесь. Мой главный вопрос заключается в том, как заставить filedialog для нового быть диалоговым окном сохранения, где вы создаете файл, а не открытый диалог.
Спасибо тонну .
РЕЗЮМЕ:
1) Как вы открываете FileDialog, который позволяет создавать пустые файлы. Я предполагаю, что это будет похоже на сохранение, но hwatever флаги ID, которые я передаю, всегда дает мне кнопку Open
2) А что касается методов сохранения, лучше ли делать то, что я показывал в коде, или использовать потоки, подобные закомментированный раздел в SaveAs ?.
Я попытался проходящим, что в FileDialog, но она по-прежнему дает мне открытую кнопку – shenk
Я обновил пример с простым примером, который работал на моем конец. –
Просто обновление: вы должны использовать 'wx.FD_SAVE' вместо' wx.SAVE' (по крайней мере, в 4.0.0b2). – Fejs