wxPython 教程(十二) GDI

转自:http://thisis.yorven.site/blog/index.php/2017/10/11/wxpython-gdi/

本节讲述 wxPython GDI 。GDI (图形设备接口) 是一个处理图形的接口,可以用它来和图形设备比如屏幕、打印机或者文件来进行交互。GDI 允许编程者在屏幕或打印机上来展示数据,而无需考虑具体设备的细节。GDI 将编程者和硬件隔离开来。

从编程者的角度来看,GDI 是处理图形的一组类和方法。GDI 包括 2D 向量图形、字体和图片。

GDI 结构

为了开始绘制图形,我们首先需要创建一个 device context (DC) 对象。在 wxPython 中,device context 即 wx.DC,它使用一个通用的方式来代表多种设备。有些相同的代码可以在多种设备上使用,比如屏幕或打印机。wx.DC 一般不直接使用,编程者一般使用某种衍生类,每一个衍生类可在特定情况下使用。

wx.DC 衍生类

  • wx.BufferedDC
  • wx.BufferedPaintDC
  • wx.PostScriptDC
  • wx.MemoryDC
  • wx.PrinterDC
  • wx.ScreenDC
  • wx.ClientDC
  • wx.PaintDC
  • wx.WindowDC

wx.ScreenDC 是用来在屏幕任意地方绘制图形的。wx.WindowDC 是用来在整个屏幕上绘制的(仅限 Windows 系统)。wx.ClientDC 用来在窗口的 client 区域进行绘制, client 区域是指除了装饰(标题栏和边框)的窗口部分。wx.PaintDC 也是在 client 区域绘制,但它和 wx.ClientDC 存在不同。wx.PaintDC 应该只用在 wx.PaintEvent 来源的情况下,而 wx.ClientDC 则不能。wx.MemoryDC 用来在 bitmap 上绘制图形。wx.PostScriptDC 被用来在任意平台上写入 POSTScript 文件。wx.PrinterDC 被用来操作打印机(仅限 Windows 系统)。

阅读更多

wxPython 教程(十一) wxPython 应用骨架

转自:http://thisis.yorven.site/blog/index.php/2017/10/10/wxpython-yingyonggujia/

在本节,我们将创建一些 wxPython 应用骨架 。样例脚本将只负责设计界面而非实现功能,目标是为了展示几款流行 GUI 界面如何用 wxPython 来完成。

阅读更多

wxPython 教程(十) 国际化

转自:http://thisis.yorven.site/blog/index.php/2017/10/10/wxpython-jiaocheng-shi-guojihua/

国际化和本地化是电脑软件适应非本地环境的方法,尤其是在其他国家和文化环境下。国际化是指确保一个应用能够适应本地的需求,比如保证本地的书写系统可以展示。本地化则是指将应用尽可能的适应特定地域,使用当地语言、当地习惯等等。本节主要讲解 wxPython 国际化 问题。

阅读更多

wxPython 教程(九) wxPython 拖拽

转自:http://thisis.yorven.site/blog/index.php/2017/10/09/wxpython-tuozhuai/

维基百科:在电脑图形用户界面里,拖拽是指点击一个虚拟对象并拖移至另一个位置或者另一个虚拟对象之上。一般来说,它可以被用来发起多种行为,或者创建两个抽象对象之间的各种关联。
拖拽是图形用户界面中最显眼的操作,通过它可以做很多复杂的事情。
在拖拽中,我们将一些数据从一个源位置移动到目标位置,所以我们必须有:

  • 一些数据
  • 一个数据来源
  • 一个数据目标

在 wxPython 中,我们有两个预定义的数据目标:wx.TextDropTarget 和 wx.FileDropTarget。

阅读更多

wxPython 教程(八) wxPython 高级 widgets

转自:http://thisis.yorven.site/blog/index.php/2017/10/09/wxpython-jiaocheng-gaoji-widgets/

动态语言使用简单,非常便于原型设计、内部开发以及学习编程。如果需要快速的解决方案或者在短期内就会更改的应用,使用动态语言更优于编译语言。相反,如果我们开发资源密集型应用、游戏以及高质量多媒体应用,那么使用 C 是最正确的选择。
本节,主要讲解多个 wxPython 高级 widgets 。wxPython 有很多有名的高级 widgets, 比如 树形 widget、HTML 窗口、 网格 widget、列表框 widget 甚至具有高级样式编排能力的编辑器 widget。

阅读更多

wxPython 教程(七) 事件

转自:http://thisis.yorven.site/blog/index.php/2017/09/23/wxpython-jiaocheng-widgets/#wxButton
在本节中,我们将介绍基本的 wxPython widgets。每一个 widget 将会有一个小例子介绍。Widgets 是 应用的基本单元,wxPython 有很多基本 widgets:按钮、选择框、滑动器、列表框等。

阅读更多

wxPython 教程(六) 对话框

转自:http://thisis.yorven.site/blog/index.php/2017/09/22/wxpython-jiaocheng-duihuakuang/

对话框即 Dialog 是多数 GUI 应用不可缺少的部分。“对话”是指两个或更多人之间的交谈。在电脑应用中,对话框是指一个可以和应用交流的窗口,可以用来输入数据、修改数据、修改应用设置等。因此,对话框是用户和电脑程序交流的重要手段。本节我们主要对 wxPython 对话框 进行讲解。

阅读更多

wxPython 教程(五) 事件

转自:http://thisis.yorven.site/blog/index.php/2017/09/22/wxpython-jiaocheng-shijian/

事件是每个 GUI 应用所必须的组成部分,所有的 GUI 应用都是事件驱动的。在应用的生命周期内,需要对各种不同类型的时间做出反应。事件主要来自于应用用户的操作触发,但也可以来源于其他方式:网络连接、窗口管理、定时器等。在应用一开始,我们调用MainLoop()函数,这使得应用开始等待处理所有将生成的事件,直到我们退出程序。本节,我们将讨论 wxPython 事件 相关知识。

阅读更多