首页 > 解决方案 > 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

标签: wxpython

解决方案


你不能:在你的文件名中。更改此行:

  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 打印到控制台并发现了问题。


推荐阅读