将窗口保存为图像文件

1 投票
1 回答
1529 浏览
提问于 2025-04-17 17:24

我在读《wxpython in action》这本书的时候,发现里面有一个关于画窗的示例。这个示例使用了cpickle(*.paint)来保存它的数据。我想知道怎么把窗口里的数据保存成一个jpg文件,这样我就可以用普通的图片查看器来查看它。

书中的saveas函数:

def OnSaveAs(self, event):
        file_wildcard = "Paint files(*.paint)|*.paint|All files(*.*)|*.*"
        dlg = wx.FileDialog(self, "save paint as ...", os.getcwd(), style=wx.SAVE|wx.OVERWRITE_PROMPT, wildcard=file_wildcard)
        if dlg.ShowModal() == wx.ID_OK:
            filename = dlg.GetPath()
            if not os.path.splitext(filename[1]):
                filename += ".paint"
            self.filename = filename
            self.SaveFile()
            self.SetTitle(self.Title + " -- " + self.filename)
        dlg.Destroy()

def SaveFile(self):
    if self.filename:
        data = self.paint.GetLinesData()
        f = open(self.filename, "w")
        cPickle.dump(data, f)
        f.close

1 个回答

0

我之前写过一个教程,教大家如何用wxPython来截取应用程序的屏幕截图,地址在这里:http://www.blog.pythonlibrary.org/2010/04/16/how-to-take-a-screenshot-of-your-wxpython-app-and-print-it/

你可能不想截取整个窗口,所以你需要计算一下你面板的大小,或者根据框架的边缘来确定你绘图的大小。不过,那个例子里的其他代码应该能帮助你入门。

撰写回答