实战wxPython系列-024

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(1)

wx.PrintDialog类提供了一个用于指定打印机配置的对话框。该对话框允许用户更改与文档相关的设置,例如纸张尺寸和方向,打页面范围以及要打印的份数。它提供控件以使用户能够从可用的打印机中进行选择,包括任何已配置的网络打印机。 在Window上使用本机打印对话框。

wx.PageSetupDialog控件用于设置页面详细信息以便打印。允许用户设置边框和边距调整量、页眉和页脚以及纵向或横向打印。

一、wx.PrintDialog简介

Wx.PrintDialog打印和打印设置公共对话框。其常用方法有:

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(2)

图1:wx.PrintDialog类继承关系

二、wx.PrintDialogData

wx.PrintDialogData保存wx.PrintDialog中与可视特性相关的数据信息。其常用方法有:

三、wx.PrintDialog演示

下面的代码演示如何使用wx.PrintDialog在程序中实现打印功能。

#打印对话框(PrintDialog) import wx class SamplePrintDialog(wx.Frame): def __init__(self, *args, **kw): super(SamplePrintDialog, self).__init__(*args, **kw) self.InitUi() def InitUi(self): #设置标题 self.SetTitle("实战wxPython: 打印对话框") #设置窗口尺寸 self.SetSize(360, 240) self.CreateStatusBar() panel = wx.Panel(self) btnTest = wx.Button(panel, label="测试打印对话框", pos = (100, 20)) btnTest.Bind(wx.EVT_BUTTON, self.OnOpenPrintDialog) self.Centre() def OnOpenPrintDialog(self, e): data = wx.PrintDialogData() data.EnableSelection(True) data.EnablePrintToFile(True) data.EnablePageNumbers(True) data.SetMinPage(1) data.SetMaxPage(10) #data.EnablePageNumbers(False) dlg = wx.PrintDialog(self, data) if dlg.ShowModal() == wx.ID_OK: data = dlg.GetPrintDialogData() #print("all pages: %d\n" % data.GetAllPages()) sbar = self.GetStatusBar() if data.GetAllPages(): sbar.SetStatusText("打印已完成") dlg.Destroy() def main(): app = wx.App() sample = SamplePrintDialog(None) sample.Show() app.MainLoop() if __name__ == "__main__": main()

运行上面的代码,在Windows系统下,其界面如图2:

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(3)

图2:打印对话框测试

当我们点击”测试打印对话框”,将弹出打印对话框,如图3所示:

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(4)

图3:打印对话框

点击打印,打印完毕,返回主窗口,在主窗口状态栏显示信息”打印已完成”。

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(5)

图4:打印测试完成

四、wx.PageSetupDialog页面设置对话框

wx.PageSetupDialog实现一个页面设置通用对话框。页面设置对话框包含纸张大小(字母,A4, A5等),方向(横向或纵向)的控件,以及(目前仅在Windows下)设置左,上,右和底部空白大小(毫米)的控件。因为在可用时使用本机对话框(目前所有主要平台都是这种情况)都使用本机对话框,所以该对话框的外观因平台而异。

注意点击确认按钮(wx.OK)和取消按钮(wx.Cancel) 不会释放本对话框,这一步必须由应用程序来完成。

wx.PageSetupDialog常用方法:

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(6)

图5:wx.PageSetupDialog类继承关系

五、wx.PageSetupDialogData

wx.PageSetupDialogData保存与wx.PageSetupDialog相关的各种信息。它包含一个wx.PrintData成员,用于保存基本打印机配置数据(与wx.PageSetupDialogData存储的用户界面配置设置相对)。

wx.PageSetupDialogDat的常用方法有:

六、wx.PageSetupDialog演示

下面的代码演示如何使用wx.PageSetupDialogData设置页面相关控制数据,然后调用wx.PrintDialogData完成页面设置。

#页面设置对话框(wx.PageSetupDialog) import wx class SamplePageSetupDialog(wx.Frame): def __init__(self, *args, **kw): super(SamplePageSetupDialog, self).__init__(*args, **kw) self.InitUi() def InitUi(self): #设置标题 self.SetTitle("实战wxPython: PageSetupDialog演示") #设置窗口尺寸 self.SetSize(320, 240) self.CreateStatusBar() panel = wx.Panel(self) btnTest = wx.Button(panel, label="测试页面对话框", pos = (100, 20)) btnTest.Bind(wx.EVT_BUTTON, self.OnTestPageSetupDialog) self.Centre() def OnTestPageSetupDialog(self, e): data = wx.PageSetupDialogData() data.EnableMargins(True) data.EnableOrientation(True) data.SetMarginTopLeft((10, 10)) data.SetMarginBottomRight((10, 10)) dlg = wx.PageSetupDialog(self, data) if dlg.ShowModal() == wx.ID_OK: data = dlg.GetPageSetupData() sbar = self.GetStatusBar() sbar.SetStatusText("页面设置完成") def main(): app = wx.App() sample = SamplePageSetupDialog(None) sample.Show() app.MainLoop() if __name__ == "__main__": main()

运行上述代码,点击窗口中的”测试页面对话框”按钮,打开页面设置对话框,进行页面设置。

wxpython父窗口和子窗口(wxPython-打印对话框和页面设置对话框)(7)

图6:页面设置对话框

七、本文知识点


前一篇:wxPython – 单选和多选列表对话框

请关注,评论,收藏,点赞,和转发。

,