wxPython 教程(十六) wxPython 俄罗斯方块

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

俄罗斯方块是最受欢迎的电脑游戏之一,它最初是由一个俄罗斯程序员 Alexey Pajitnov 在 1985 年设计编写的。从那以后,各种俄罗斯方块就成了几乎每个电脑必装的游戏。本节讲述 wxPython 俄罗斯方块 游戏的编写。

俄罗斯方块是一种下落方块的拼图游戏。在这个游戏中,我们有 7 个不同的 tetrominoes :S 形、Z 形、T 形、L 形、线形、反 L 形、正方形。每一个都是由 4 个小方块构成的,它们会从顶端下落,玩家的目标是通过移动和旋转这些形状来使得它们更契合的堆放在最下面。如果有一行被填满,则会消去一行并得到一定分数。直到方块堆积到顶部无法继续下落时,游戏结束。

俄罗斯方块的四格拼板

阅读全文

wxPython 教程(十五) wxPython Gripts

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

本节中,我们将展示一些简单但完整的脚本,这些图形脚本也叫做 gripts 将展示不同的编程领域应用。

我们一共展示 3 个 wxPython gripts 。第一个发送 email 消息,第二个连接至匿名 FTP 账户并展示一个已连接或未连接图像,最后一个创建一个拼图游戏。

阅读全文

wxPython 教程(十四) 提示和技巧

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

本节,我们将讲解一些 wxPython 有趣的技巧。

交互按钮

当我们用鼠标进入到按钮区域时, wx.EVT_ENTER_WINDOW 事件将被触发。类似的,当鼠标离开按钮时,wx.EVT_LEAVE_WINDOW 也会被触发。我们对这两个事件进行绑定。

阅读全文

wxPython 教程(十三) 自定义控件

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

本节讲述 wxPython 自定义控件 。GUI Toolkits 会提供多数常用的部件,比如按钮、文本控件、滚动条、滑块等等。wxPython 也会提供很多控件,但若需要更定制化的控件还是需要开发者自己编写。

自定义控件通过两种方式创建:一种是通过修改或增强现有控件,另一种是我们从零开始直接创建。

阅读全文

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:按钮、选择框、滑动器、列表框等。

阅读全文