wxpython - Windows 10下wxPython FileDialog默认文件名空白
问题描述
保存日志文件时,我希望有一个基于时间的文件名。当我尝试设置默认文件名时,对话框出现一个空白文件名,如下所示。我尝试了等效的位置函数调用,但它也不起作用。
知道如何让 wx.FileDialog() 设置文件名,以便您只需单击“保存”以使用默认名称保存文件吗?
在 Windows 10 下使用以下版本:
Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 位 (AMD64)]
wx.version:4.1.1 msw(凤凰)wxWidgets 3.1.5
不起作用的代码:
def OnSave(self, event):
default_file = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ".log"
dlg = wx.FileDialog(self.frame, message = "Save Log Contents",
defaultDir = os.getcwd(),
defaultFile = default_file,
wildcard = "Log files (*.log)|*.log",
style = wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
if dlg.ShowModal() == wx.ID_CANCEL:
dlg.Destroy()
return
file_path = dlg.GetPath()
self.window.tc.AppendText("%s Saving log to %s\n" % (datetime.datetime.now(), file_path))
self.window.tc.SaveFile(file_path)
dlg.Destroy()
return True
解决方案
你不能:
在你的文件名中。更改此行:
default_file = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ".log"
对此:
default_file = datetime.datetime.now().strftime('%Y-%m-%d %H_%M_%S') + ".log"
你会得到更好的结果。
我是如何发现这一点的(不是立即的):
直到我尝试使用设置默认文件名时才发现这一点
dlg.SetFilename(default_file)
在打开对话框之前,我收到一条错误消息。然后我将默认文件名更改为“junk.log”,它工作正常。然后我将 default_file 打印到控制台并发现了问题。
推荐阅读
- dialogflow-es - 输入无效后重新提示用户
- angular - 使用 Angular6 的响应式表单的日期时间选择器
- vba - 如何创建脚本来删除传入电子邮件的正文?
- node.js - 有没有办法将函数上下文发送到 nodejs mongoose 中的模型?
- c++ - 在与 for 循环时反转 PBM 图像的位
- rest - 在更新 Azure 流分析作业期间,我收到 HTTP 422 Unprocessable Entity
- node.js - 有没有可以快速加载和播放的node.js mp3模块
- php - 复杂的雄辩关系
- html - 我如何在角度材料选择表单组件中添加搜索功能?
- asp.net-core - ASPNET Core 如何解析配置路径