提交 b68914ad 编写于 作者: W wizardforcel

2019-10-20 22:11:56

上级 710f0fa8
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/winapi/menus/](http://zetcode.com/gui/winapi/menus/)
在 Windows API 教程的这一部分中,我们创建菜单。 _ 菜单 _ 是位于菜单栏中的一组命令。 _ 菜单栏 _ 包含菜单列表。 菜单可以包含菜单项或其他菜单调用子菜单。 执行命令的菜单项称为命令项或命令。 在 Windows 上,菜单栏有时称为顶层菜单。 菜单和子菜单称为弹出菜单。 菜单项通常分为一些逻辑组。 这些组由分隔符分隔。 分隔符是一条小的水平线。
在 Windows API 教程的这一部分中,我们创建菜单。菜单是位于菜单栏中的一组命令。菜单栏包含菜单列表。 菜单可以包含菜单项或其他菜单调用子菜单。 执行命令的菜单项称为命令项或命令。 在 Windows 上,菜单栏有时称为顶层菜单。 菜单和子菜单称为弹出菜单。 菜单项通常分为一些逻辑组。 这些组由分隔符分隔。 分隔符是一条小的水平线。
## 一个简单的菜单
......
......@@ -4,23 +4,23 @@
本章是 wxPython 工具箱的简介。
wxPython 是用于创建桌面 GUI 应用的跨平台工具包。 wxPython 的主要作者是 _Robin Dunn_ 。 使用 wxPython,开发人员可以在 Windows,Mac 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。
wxPython 是用于创建桌面 GUI 应用的跨平台工具包。 wxPython 的主要作者是 Robin Dunn。 使用 wxPython,开发人员可以在 Windows,Mac 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。
## Python
![Python logo](img/9397b09623aac989c81856c9622539a8.jpg) Python 是一种成功的脚本语言。 它最初由 _Guido van Rossum_ 开发。 它于 1991 年首次发布。Python 受 ABC 和 Haskell 编程语言的启发。 Python 是高级通用多平台解释型语言。 有些人喜欢将其称为动态语言。 这很容易学习。 Python 是一种简约语言。 它最明显的功能之一是它不使用分号或方括号。 Python 使用缩进代替。 今天,Python 由世界各地的一大批志愿者维护。
![Python logo](img/9397b09623aac989c81856c9622539a8.jpg) Python 是一种成功的脚本语言。 它最初由 Guido van Rossum 开发。 它于 1991 年首次发布。Python 受 ABC 和 Haskell 编程语言的启发。 Python 是高级通用多平台解释型语言。 有些人喜欢将其称为动态语言。 这很容易学习。 Python 是一种简约语言。 它最明显的功能之一是它不使用分号或方括号。 Python 使用缩进代替。 今天,Python 由世界各地的一大批志愿者维护。
为了创建图形用户界面,Python 程序员可以在三个合适的选项中进行选择:PyGTK,wxPython 和 PyQt。
## wxPython 模块
wxPython 是用于创建桌面 GUI 应用的跨平台工具包。 wxPython 的主要作者是 _Robin Dunn_ 。 使用 wxPython,开发人员可以在 Windows,Mac 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。 wxPython 由五个基本模块组成。
wxPython 是用于创建桌面 GUI 应用的跨平台工具包。 wxPython 的主要作者是 Robin Dunn。 使用 wxPython,开发人员可以在 Windows,Mac 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。 wxPython 由五个基本模块组成。
![wxPython modules](img/81f5de3ecbe08da10dd608a300c257bc.jpg)
Figure: wxPython modules
_ 控件 _ 模块提供了图形应用中常见的窗口小部件。 例如,按钮,工具栏或笔记本。 小部件在 Windows OS 下称为控件。 _ 核心 _ 模块由开发中使用的基本类组成。 这些类包括 Object 类(它是所有类的母类),Sizers(用于小部件布局),Events,基本几何类(如 Point 和 Rectangle)。 图形设备接口( _GDI_ )是用于绘制到小部件上的一组类。 此模块包含用于处理字体,颜色,画笔,笔或图像的类。 _ 其他 _ 模块包含各种其他类和模块功能。 这些类用于日志记录,应用配置,系统设置,与显示器或操纵杆一起使用。 _Windows_ 模块由构成应用的各种窗口组成,例如面板,对话框,框架或滚动窗口。
控件模块提供了图形应用中常见的窗口小部件。 例如,按钮,工具栏或笔记本。 小部件在 Windows OS 下称为控件。核心模块由开发中使用的基本类组成。 这些类包括 Object 类(它是所有类的母类),Sizers(用于小部件布局),Events,基本几何类(如 Point 和 Rectangle)。 图形设备接口(GDI)是用于绘制到小部件上的一组类。 此模块包含用于处理字体,颜色,画笔,笔或图像的类。其他模块包含各种其他类和模块功能。 这些类用于日志记录,应用配置,系统设置,与显示器或操纵杆一起使用。Windows 模块由构成应用的各种窗口组成,例如面板,对话框,框架或滚动窗口。
## wxPython API
......@@ -84,7 +84,7 @@ wxPython 中的小部件之间有特定的关系。 此关系是通过继承开
Figure: Inheritance diagram
假设我们在应用中使用按钮小部件。 按钮小部件继承自四个不同的基类。 最接近的类是`wx.Control`类。 按钮小部件是一种小窗口。 屏幕上显示的所有小部件都是窗口。 因此,它们继承自`wx.Window`类。 有些物体是不可见的。 例如,大小调整程序,设备上下文或区域设置对象。 也有一些可见的类,但它们不是 Windows。 例如,颜色对象,插入符号对象或光标对象。 并非所有的小部件都是控件。 例如`wx.Dialog`不是一种控件。 控件是放置在称为 _ 容器 _ 的其他窗口小部件上的窗口小部件。 这就是为什么我们有一个单独的`wx.Control`基类。
假设我们在应用中使用按钮小部件。 按钮小部件继承自四个不同的基类。 最接近的类是`wx.Control`类。 按钮小部件是一种小窗口。 屏幕上显示的所有小部件都是窗口。 因此,它们继承自`wx.Window`类。 有些物体是不可见的。 例如,大小调整程序,设备上下文或区域设置对象。 也有一些可见的类,但它们不是 Windows。 例如,颜色对象,插入符号对象或光标对象。 并非所有的小部件都是控件。 例如`wx.Dialog`不是一种控件。 控件是放置在称为容器的其他窗口小部件上的窗口小部件。 这就是为什么我们有一个单独的`wx.Control`基类。
每个窗口都可以对事件做出反应。 按钮小部件也是如此。 通过单击按钮,我们启动`wx.EVT_COMMAND_BUTTON_CLICKED`事件。 按钮小部件通过`wx.Window`类继承`wx.EvtHandler`。 每个响应事件的小部件都必须继承`wx.EvtHandler`类。 最后,所有对象都继承自`wx.Object`类。
......
......@@ -428,7 +428,7 @@ Figure: Check menu item
## 上下文菜单
_ 上下文菜单 _ 是在某些上下文下显示的命令列表。 例如,在 Firefox Web 浏览器中,当我们右键单击网页时,将获得一个上下文菜单。 在这里,我们可以重新加载页面,返回或查看页面源代码。 如果右键单击工具栏,则将获得另一个用于管理工具栏的上下文菜单。 上下文菜单有时称为弹出菜单。
上下文菜单是在某些上下文下显示的命令列表。 例如,在 Firefox Web 浏览器中,当我们右键单击网页时,将获得一个上下文菜单。 在这里,我们可以重新加载页面,返回或查看页面源代码。 如果右键单击工具栏,则将获得另一个用于管理工具栏的上下文菜单。 上下文菜单有时称为弹出菜单。
`context_menu.py`
......
......@@ -6,9 +6,9 @@
## 定义
_ 事件 _ 是来自底层框架(通常是 GUI 工具箱)的应用级信息。 _ 事件循环 _ 是一种程序结构,用于等待并调度程序中的事件或消息。 事件循环反复查找要处理的事件。 _ 调度程序 _ 是将事件映射到 _ 事件处理程序 _ 的过程。 事件处理程序是对事件做出反应的方法。
事件是来自底层框架(通常是 GUI 工具箱)的应用级信息。事件循环是一种程序结构,用于等待并调度程序中的事件或消息。 事件循环反复查找要处理的事件。调度程序是将事件映射到事件处理程序的过程。 事件处理程序是对事件做出反应的方法。
_ 事件对象 _ 是与事件关联的对象。 通常是一个窗口。 _ 事件类型 _ 是已生成的唯一事件。 _ 事件绑定器 _ 是将事件类型与事件处理程序绑定在一起的对象。
事件对象是与事件关联的对象。 通常是一个窗口。事件类型是已生成的唯一事件。事件绑定器是将事件类型与事件处理程序绑定在一起的对象。
## wxPython `wx.EVT_MOVE`示例
......@@ -110,7 +110,7 @@ Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY)
```
`event` EVT_ *对象之一。 它指定事件的类型。 `handler`是要调用的对象。 换句话说,它是程序员绑定到事件的一种方法。 当我们要区分相同事件类型和不同小部件时,使用`source`参数。 当我们有多个按钮,菜单项等时,将使用`id`参数。`id`用于在它们之间进行区分。 当需要将处理程序绑定到 ID 范围时,例如`EVT_MENU_RANGE`,可以使用`id2`
`event``EVT*`对象之一。 它指定事件的类型。 `handler`是要调用的对象。 换句话说,它是程序员绑定到事件的一种方法。 当我们要区分相同事件类型和不同小部件时,使用`source`参数。 当我们有多个按钮,菜单项等时,将使用`id`参数。`id`用于在它们之间进行区分。 当需要将处理程序绑定到 ID 范围时,例如`EVT_MENU_RANGE`,可以使用`id2`
注意,方法`Bind()`在类`EvtHandler`中定义。 它是`wx.Window`继承的类。 `wx.Window`是 wxPython 中大多数小部件的基类。 还有一个相反的过程。 如果要从事件中取消绑定方法,请调用`Unbind()`方法。 它具有与上述相同的参数。
......
......@@ -796,7 +796,7 @@ class AutoWidthListCtrl(wx.ListCtrl, wx.lib.mixins.listctrl.ListCtrlAutoWidthMix
```
我们创建一个新的`AutoWidthListCtrl`类。 此类从`wx.ListCtrl``wx.lib.mixins.listctrl.ListCtrlAutoWidthMixin`继承。 这称为 _ 多重继承 _。 最后一列将自动调整大小以占据`wx.ListCtrl`的剩余宽度。
我们创建一个新的`AutoWidthListCtrl`类。 此类从`wx.ListCtrl``wx.lib.mixins.listctrl.ListCtrlAutoWidthMixin`继承。 这称为多重继承。 最后一列将自动调整大小以占据`wx.ListCtrl`的剩余宽度。
### `wx.lib.mixins.listctrl.ColumnSorterMixin`
......
......@@ -2,15 +2,15 @@
> 原文: [http://zetcode.com/wxpython/gdi/](http://zetcode.com/wxpython/gdi/)
_GDI_ (_ 图形设备接口 _)是用于处理图形的接口。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。
GDI(图形设备接口)是用于处理图形的接口。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。
从程序员的角度来看,GDI 是用于处理图形的一组类和方法。 GDI 由 2D 量图形,字体和图像组成。
从程序员的角度来看,GDI 是用于处理图形的一组类和方法。 GDI 由 2D 量图形,字体和图像组成。
![The GDI](img/ea308969a05721d4685eb030f9528565.jpg)
Figure: The GDI structure
要开始绘制图形,我们必须创建一个 _ 设备上下文 _( _DC_ )对象。 在 wxPython 中,设备上下文称为`wx.DC`。 该文档将`wx.DC`定义为可以在其上绘制图形和文本的设备上下文。 它以通用方式表示设备数量。 同一段代码可以写入不同类型的设备。 无论是屏幕还是打印机。 `wx.DC`不能直接使用。 相反,程序员应选择派生类之一。 每个派生类都打算在特定条件下使用。
要开始绘制图形,我们必须创建一个设备上下文(DC)对象。 在 wxPython 中,设备上下文称为`wx.DC`。 该文档将`wx.DC`定义为可以在其上绘制图形和文本的设备上下文。 它以通用方式表示设备数量。 同一段代码可以写入不同类型的设备。 无论是屏幕还是打印机。 `wx.DC`不能直接使用。 相反,程序员应选择派生类之一。 每个派生类都打算在特定条件下使用。
## 派生的`wx.DC`类
......@@ -182,9 +182,9 @@ Figure: drawing a line
## 计算机图形
有两种不同的计算机图形:_ 矢量 _ 和 _ 光栅 _ 图形。 栅格图形将图像表示为像素的集合。 矢量图形是使用诸如点,线,曲线或多边形之类的几何图元来表示图像。 这些基元是使用数学方程式创建的。
有两种不同的计算机图形:向量和光栅图形。 栅格图形将图像表示为像素的集合。 向量图形是使用诸如点,线,曲线或多边形之类的几何图元来表示图像。 这些基元是使用数学方程式创建的。
两种类型的计算机图形都有优点和缺点。 量图形优于栅格的优点是:
两种类型的计算机图形都有优点和缺点。 量图形优于栅格的优点是:
* 较小的尺寸
* 无限放大的能力
......@@ -1299,7 +1299,7 @@ Figure: Set operations on regions
英语成为全球交流的语言。 度量系统也因此成为度量系统中的全局系统。 根据 Wikipedia [文章](http://en.wikipedia.org/wiki/Metric_system)的介绍,只有三个例外。 美国,利比里亚和缅甸。 例如,美国人用华氏温度来测量温度,用加仑来加油或用磅来称重。
即使我们在欧洲使用公制,也有例外。 美国主导着 IT,我们正在导入其标准。 所以我们也说我们有一台 17 英寸的显示器。 图形可以放入文件中,可以在监视器或其他设备(相机,摄像机,移动电话)的屏幕上显示,也可以用打印机进行打印。 纸张大小可以以毫米,点或英寸为单位设置,屏幕的分辨率以像素为单位,文本的质量取决于每英寸的点数。 我们也有点,位或样本。 这是我们拥有 _ 逻辑 _ 和 _ 设备 _ 单元的原因之一。
即使我们在欧洲使用公制,也有例外。 美国主导着 IT,我们正在导入其标准。 所以我们也说我们有一台 17 英寸的显示器。 图形可以放入文件中,可以在监视器或其他设备(相机,摄像机,移动电话)的屏幕上显示,也可以用打印机进行打印。 纸张大小可以以毫米,点或英寸为单位设置,屏幕的分辨率以像素为单位,文本的质量取决于每英寸的点数。 我们也有点,位或样本。 这是我们拥有逻辑和设备单元的原因之一。
## 逻辑和设备单元
......@@ -1307,7 +1307,7 @@ Figure: Set operations on regions
如果要绘制一些文本,请提供 text 参数和 x,y 位置。 x,y 以逻辑单位表示。 然后,设备以设备为单位绘制文本。 逻辑和设备单元可以相同,也可以不同。 逻辑单位由人(毫米)使用,设备单位是`particular`设备固有的。 例如,屏幕的本机设备单位是像素。 `HEWLETT PACKARD LaserJet 1022`的本机设备单位为 1200 dpi(每英寸点数)。
到目前为止,我们已经讨论了各种度量单位。 设备的 _ 映射模式 _ 是一种将逻辑单元转换为设备单元的方法。 wxPython 具有以下映射模式:
到目前为止,我们已经讨论了各种度量单位。 设备的映射模式是一种将逻辑单元转换为设备单元的方法。 wxPython 具有以下映射模式:
| 映射模式 | 逻辑单元 |
| --- | --- |
......
......@@ -2,9 +2,9 @@
> 原文: [http://zetcode.com/wxpython/thetetrisgame/](http://zetcode.com/wxpython/thetetrisgame/)
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 _Alexey Pajitnov_ 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 Alexey Pajitnov 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 _tetrominoes_ :S 形,Z 形,T 形,L 形,线形,MirroredL 形和方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 tetrominoes:S 形,Z 形,T 形,L 形,线形,MirroredL 形和方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
![Tetrominoes](img/56a1c70c2397648b9ac318bd99ea7443.jpg)
......@@ -617,7 +617,7 @@ def removeFullLines(self):
```
如果片段触底,我们将调用`removeFullLines()`方法。 首先,我们找出所有实线并将其删除。 通过将所有行移动到当前全行上方来将其向下移动一行来实现。 请注意,我们颠倒了要删除的行的顺序。 否则,它将无法正常工作。 在我们的情况下,我们使用 _ 天真重力 _。 这意味着碎片可能会漂浮在空的间隙上方。
如果片段触底,我们将调用`removeFullLines()`方法。 首先,我们找出所有实线并将其删除。 通过将所有行移动到当前全行上方来将其向下移动一行来实现。 请注意,我们颠倒了要删除的行的顺序。 否则,它将无法正常工作。 在我们的情况下,我们使用朴素重力。 这意味着碎片可能会漂浮在空的间隙上方。
```
def newPiece(self):
......
......@@ -6,7 +6,7 @@
## GTK+
_GTK+ _ 是用于创建图形用户界面的库。 该库是用 C 编程语言创建的。 GTK+ 库也称为 GIMP 工具箱。 最初,该库是在开发 GIMP 图像处理程序时创建的。 从那时起,GTK+ 成为 Linux 和 BSD Unix 下最受欢迎的工具包之一。 如今,开源世界中的大多数 GUI 软件都是在 Qt 或 GTK+ 中创建的。 GTK+ 是一个面向对象的应用编程接口。 面向对象的系统是使用 Glib Object 系统创建的,该系统是 GTK+ 库的基础。 _GObject_ 还可以为各种其他编程语言创建语言绑定。 存在用于 C++ ,Python,Perl,Java,C#和其他编程语言的语言绑定。
GTK+ 是用于创建图形用户界面的库。 该库是用 C 编程语言创建的。 GTK+ 库也称为 GIMP 工具箱。 最初,该库是在开发 GIMP 图像处理程序时创建的。 从那时起,GTK+ 成为 Linux 和 BSD Unix 下最受欢迎的工具包之一。 如今,开源世界中的大多数 GUI 软件都是在 Qt 或 GTK+ 中创建的。 GTK+ 是一个面向对象的应用编程接口。 面向对象的系统是使用 Glib Object 系统创建的,该系统是 GTK+ 库的基础。GObject 还可以为各种其他编程语言创建语言绑定。 存在用于 C++ ,Python,Perl,Java,C#和其他编程语言的语言绑定。
GTK+ 本身取决于以下库:
......@@ -17,7 +17,7 @@ GTK+ 本身取决于以下库:
* GdkPixbuf
* 开罗
_Glib_ 是通用实用程序库。 它提供各种数据类型,字符串实用程序,启用错误报告,消息日志记录,使用线程以及其他有用的编程功能。 _Pango_ 是一个实现国际化的库。 _ATK_ 是可访问性工具包; 它提供了一些工具,可以帮助残障人士使用计算机。 _GDK_ 是基础图形系统提供的低级绘图和窗口功能的包装。 在 Linux 上,GDK 位于 X Server 和 GTK+ 库之间。 它处理基本的渲染,例如图形基元,光栅图形,光标,字体以及窗口事件和拖放功能。 _GdkPixbuf_ 库是用于图像加载和像素缓冲区操作的工具包。 _ 开罗 _ 是用于创建 2D 矢量图形的库。 自 2.8 版起,它已包含在 GTK+ 中。
Glib 是通用实用程序库。 它提供各种数据类型,字符串实用程序,启用错误报告,消息日志记录,使用线程以及其他有用的编程功能。Pango 是一个实现国际化的库。ATK 是可访问性工具包; 它提供了一些工具,可以帮助残障人士使用计算机。GDK 是基础图形系统提供的低级绘图和窗口功能的包装。 在 Linux 上,GDK 位于 X Server 和 GTK+ 库之间。 它处理基本的渲染,例如图形基元,光栅图形,光标,字体以及窗口事件和拖放功能。GdkPixbuf 库是用于图像加载和像素缓冲区操作的工具包。Cario 是用于创建 2D 向量图形的库。 自 2.8 版起,它已包含在 GTK+ 中。
Gnome 和 XFce 桌面环境已使用 GTK+ 库创建。 SWT 和 wxWidgets 是使用 GTK+ 的众所周知的编程框架。 使用 GTK+ 的著名软件应用包括 Firefox 或 Inkscape。
......
......@@ -319,7 +319,7 @@ Figure: Tooltip
## 助记符
_ 助记符 _ 是用于激活支持助记符的窗口小部件的快捷键。 它们可以与标签,按钮或菜单项一起使用。 助记符是通过在小部件的标签上添加 _ 字符来创建的。 它使下一个字符成为助记符。 字符与无鼠标修饰符(通常为 `Alt` )结合在一起。 选择的字符带有下划线,但是可以以平台特定的方式强调。 在某些平台上,仅在按下无鼠标修饰符后才对字符加下划线。
助记符是用于激活支持助记符的窗口小部件的快捷键。 它们可以与标签,按钮或菜单项一起使用。 助记符是通过在小部件的标签上添加字符来创建的。 它使下一个字符成为助记符。 字符与无鼠标修饰符(通常为 `Alt` )结合在一起。 选择的字符带有下划线,但是可以以平台特定的方式强调。 在某些平台上,仅在按下无鼠标修饰符后才对字符加下划线。
`mnemonic.c`
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/gtk2/menusandtoolbars/](http://zetcode.com/gui/gtk2/menusandtoolbars/)
在 GTK+ 编程教程的这一部分中,我们使用菜单和工具栏。 _ 菜单栏 _ 是 GUI 应用的常见部分。 它是位于各个菜单中的一组命令。
在 GTK+ 编程教程的这一部分中,我们使用菜单和工具栏。菜单栏是 GUI 应用的常见部分。 它是位于各个菜单中的一组命令。
`GtkMenuBar`是创建菜单栏的窗口小部件。 它包含一对多`GtkMenuItems`。 菜单项是用户可以选择的对象。 `GtkMenu`实现了一个由`GtkMenuItem`对象列表组成的下拉菜单,用户可以对其进行导航和激活以执行应用功能。 `GtkMenu`附加到菜单栏的菜单项或另一个菜单的菜单项。
......@@ -241,7 +241,7 @@ Figure: Submenu
## 图像菜单,助记符和加速器
`GtkImageMenuItem`是一个菜单项,在文本标签旁边带有一个图标。 由于用户可以禁用菜单图标的显示,因此我们仍然需要填写文本标签。 _ 加速器 _ 是用于激活菜单项的键盘快捷键。 _ 助记符 _ 是 GUI 元素的键盘快捷键。 它们以带下划线的字符表示。 请注意,在某些环境中,我们首先需要按无鼠标修饰符(通常为`Alt`)以显示带下划线的字符。
`GtkImageMenuItem`是一个菜单项,在文本标签旁边带有一个图标。 由于用户可以禁用菜单图标的显示,因此我们仍然需要填写文本标签。加速器是用于激活菜单项的键盘快捷键。助记符是 GUI 元素的键盘快捷键。 它们以带下划线的字符表示。 请注意,在某些环境中,我们首先需要按无鼠标修饰符(通常为`Alt`)以显示带下划线的字符。
我们可能还配置了不显示菜单图像的环境。 要打开菜单图像,我们启动`gconf-editor`并转到`/desktop/gnome/interface/menus_have_icons`并检查选项。
......
......@@ -4,7 +4,7 @@
在本章中,我们将展示如何在窗口或对话框中布置窗口小部件。
在设计应用的 UI 时,我们决定要使用哪些小部件以及如何组织这些小部件。 为了组织窗口小部件,我们使用称为 _ 布局容器 _ 的专用非可见窗口小部件。 在本章中,我们将提及`GtkAlignment``GtkFixed``GtkVBox``GtkTable`
在设计应用的 UI 时,我们决定要使用哪些小部件以及如何组织这些小部件。 为了组织窗口小部件,我们使用称为布局容器的专用非可见窗口小部件。 在本章中,我们将提及`GtkAlignment``GtkFixed``GtkVBox``GtkTable`
## `GtkFixed`
......
......@@ -4,7 +4,7 @@
在 GTK+ 编程教程的这一部分中,我们讨论事件系统。
GTK+ 是事件驱动的系统。 所有 GUI 应用都是事件驱动的。 应用启动一个主循环,该循环不断检查新生成的事件。 如果没有事件,则应用将等待并且不执行任何操作。 在 GTK+ 中,_ 事件 _ 是来自 X 服务器的消息。 当事件到达窗口小部件时,它可以通过发出 _ 信号 _ 对此事件做出反应。 GTK+ 程序员可以将特定的 _ 回调 _ 连接到信号。 回调是对信号做出反应的处理函数。
GTK+ 是事件驱动的系统。 所有 GUI 应用都是事件驱动的。 应用启动一个主循环,该循环不断检查新生成的事件。 如果没有事件,则应用将等待并且不执行任何操作。 在 GTK+ 中,事件是来自 X 服务器的消息。 当事件到达窗口小部件时,它可以通过发出信号对此事件做出反应。 GTK+ 程序员可以将特定的回调连接到信号。 回调是对信号做出反应的处理函数。
## 点击按钮
......
......@@ -323,7 +323,7 @@ Button controls
## 复选框
_ 复选框控件 _ 是可以单击以打开或关闭选项的框。
复选框控件是可以单击以打开或关闭选项的框。
`checkbox.c`
......
......@@ -6,7 +6,7 @@
## 单选按钮和分组框
在这里,我们介绍两个控件。分组框是围绕一组控件的矩形。 这些通常是单选按钮。 分组框具有描述控件的标签。 此控件的目的是对某种程度上相关的控件进行分组。 _ 单选按钮 _ 是一种特殊的按钮,用户可以选择但不能清除。 它允许用户从一组选项中选择一个独占选项。
在这里,我们介绍两个控件。分组框是围绕一组控件的矩形。 这些通常是单选按钮。 分组框具有描述控件的标签。 此控件的目的是对某种程度上相关的控件进行分组。单选按钮是一种特殊的按钮,用户可以选择但不能清除。 它允许用户从一组选项中选择一个独占选项。
`radio_buttons.c`
......@@ -307,7 +307,7 @@ Figure: Combo box
## 进度条
_ 进度条 _ 是当我们处理冗长的任务时使用的控件。 它具有动画效果,以便用户知道我们的任务正在进行中。
进度条是当我们处理冗长的任务时使用的控件。 它具有动画效果,以便用户知道我们的任务正在进行中。
`progressbar.c`
......
......@@ -6,7 +6,7 @@
## 标签控件
_ 选项卡控件 _ 将具有相应选项卡的多个窗口合并在一起。
选项卡控件将具有相应选项卡的多个窗口合并在一起。
`tabcontrol.c`
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/winapi/gdi/](http://zetcode.com/gui/winapi/gdi/)
图形设备接口(GDI)是用于处理图形的接口。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。 从程序员的角度来看,GDI 是一组用于处理图形的 API 函数。 GDI 由 2D 量图形,字体和图像组成。 要开始绘制图形,我们必须获得设备上下文(DC)对象。
图形设备接口(GDI)是用于处理图形的接口。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。 从程序员的角度来看,GDI 是一组用于处理图形的 API 函数。 GDI 由 2D 量图形,字体和图像组成。 要开始绘制图形,我们必须获得设备上下文(DC)对象。
每当需要重绘窗口时,都会生成`WM_PAINT`消息。 程序员在窗口的客户区域画图。 操作系统会自动绘制包括标题栏在内的周围框架。
......@@ -483,11 +483,11 @@ Figure: Bézier curve
## 钢笔
_ 笔 _ 是基本图形对象。 它用于绘制矩形,椭圆形,多边形或其他形状的线,曲线和轮廓。
是基本图形对象。 它用于绘制矩形,椭圆形,多边形或其他形状的线,曲线和轮廓。
笔有两种类型:化妆笔和几何笔。 _ 化妆笔 _ 是固定宽度为 1 的简单笔。它们具有三个属性:宽度,样式和颜色。 它们比几何笔更有效。 可以使用`CreatePen()``CreatePenIndirect()``ExtCreatePen()`功能创建化妆笔。
笔有两种类型:化妆笔和几何笔。化妆笔是固定宽度为 1 的简单笔。它们具有三个属性:宽度,样式和颜色。 它们比几何笔更有效。 可以使用`CreatePen()``CreatePenIndirect()``ExtCreatePen()`功能创建化妆笔。
_ 几何笔 _ 比化妆笔复杂。 它们具有七个属性:宽度,样式,颜色,图案,剖面线,端盖和连接样式。 几何 pes 是使用`ExtCreatePen()`功能创建的。
几何笔比化妆笔复杂。 它们具有七个属性:宽度,样式,颜色,图案,剖面线,端盖和连接样式。 几何 pes 是使用`ExtCreatePen()`功能创建的。
```
HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor);
......@@ -791,7 +791,7 @@ Figure: Line joins
## 笔刷
_ 画笔 _ 是基本图形对象。 它用于绘制图形形状的背景,例如矩形,椭圆形或多边形。 笔刷可以是纯色,阴影线或自定义位图图案。
画笔是基本图形对象。 它用于绘制图形形状的背景,例如矩形,椭圆形或多边形。 笔刷可以是纯色,阴影线或自定义位图图案。
### 实心笔刷
......
......@@ -24,7 +24,7 @@
## 电子书
独特的 _ 电子书 _,涵盖了 PyQt5 库的高级功能:[高级 PyQt5 电子书](/ebooks/advancedpyqt5/)
独特的电子书,涵盖了 PyQt5 库的高级功能:[高级 PyQt5 电子书](/ebooks/advancedpyqt5/)
## 相关教程
......
......@@ -43,7 +43,7 @@ PyQt5 的类分为几个模块,包括以下模块:
`QtBluetooth`模块包含用于扫描设备以及与它们连接和交互的类。 `QtNetwork`模块包含用于网络编程的类。 这些类通过使网络编程更加容易和可移植性,来简化 TCP / IP 和 UDP 客户端和服务器的编码。 `QtPositioning`包含用于通过使用各种可能的来源(包括卫星,Wi-Fi 或文本文件)确定位置的类。 `Enginio`模块实现了用于访问 Qt Cloud Services 托管应用运行时的客户端库。 `QtWebSockets`模块包含实现 WebSocket 协议的类。 `QtWebKit`包含基于 WebKit2 库的 Web 浏览器实现的类。 `QtWebKitWidgets`包含用于基于 WebKit1 的 Web 浏览器实现的类,以用于基于`QtWidgets`的应用。
`QtXml`包含用于处理 XML 文件的类。 该模块提供了 SAX 和 DOM API 的实现。 `QtSvg`模块提供了用于显示 SVG 文件内容的类。 可伸缩量图形(SVG)是一种用于描述 XML 中的二维图形和图形应用的语言。 `QtSql`模块提供用于处理数据库的类。 `QtTest`包含可对 PyQt5 应用进行单元测试的功能。
`QtXml`包含用于处理 XML 文件的类。 该模块提供了 SAX 和 DOM API 的实现。 `QtSvg`模块提供了用于显示 SVG 文件内容的类。 可伸缩量图形(SVG)是一种用于描述 XML 中的二维图形和图形应用的语言。 `QtSql`模块提供用于处理数据库的类。 `QtTest`包含可对 PyQt5 应用进行单元测试的功能。
## PyQt4 和 PyQt5 的区别
......@@ -56,7 +56,7 @@ PyQt5 与 PyQt4 向后不兼容。 PyQt5 有几个重大变化。 但是,将
## Python
![python logo](img/bcc161b3a545fd24eb44bc8a4bb5d41d.jpg) Python 是一种通用的,动态的,面向对象的编程语言。 Python 语言的设计目的强调程序员的生产力和代码可读性。 Python 最初是由 _Guido van Rossum_ 开发的。 它于 1991 年首次发布。Python 受 ABC,Haskell,Java,Lisp,Icon 和 Perl 编程语言的启发。 Python 是一种高级通用通用解释型语言。 Python 是一种简约语言。 它最明显的功能之一是它不使用分号或方括号。 它改用缩进。 目前,Python 有两个主要分支:Python 2.x 和 Python3.x。 Python 3.x 打破了与早期版本 Python 的向后兼容性。 它的创建是为了纠正该语言的某些设计缺陷并使该语言更简洁。 Python 由世界各地的一大批志愿者维护。 Python 是开源软件。 对于那些想学习编程的人来说,Python 是一个理想的起点。
![python logo](img/bcc161b3a545fd24eb44bc8a4bb5d41d.jpg) Python 是一种通用的,动态的,面向对象的编程语言。 Python 语言的设计目的强调程序员的生产力和代码可读性。 Python 最初是由 Guido van Rossum 开发的。 它于 1991 年首次发布。Python 受 ABC,Haskell,Java,Lisp,Icon 和 Perl 编程语言的启发。 Python 是一种高级通用通用解释型语言。 Python 是一种简约语言。 它最明显的功能之一是它不使用分号或方括号。 它改用缩进。 目前,Python 有两个主要分支:Python 2.x 和 Python3.x。 Python 3.x 打破了与早期版本 Python 的向后兼容性。 它的创建是为了纠正该语言的某些设计缺陷并使该语言更简洁。 Python 由世界各地的一大批志愿者维护。 Python 是开源软件。 对于那些想学习编程的人来说,Python 是一个理想的起点。
本教程使用 Python 3.x 版本。
......
......@@ -26,7 +26,7 @@
## 电子书
ZetCode 上有独特的 _ 电子书 _ [Windows API 编程简介](/ebooks/windowsapi/); PDF 格式,包含 244 页和 114 个代码示例。
ZetCode 上有独特的电子书 [Windows API 编程简介](/ebooks/windowsapi/); PDF 格式,包含 244 页和 114 个代码示例。
## Windows API
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/pyqt5/layout/](http://zetcode.com/gui/pyqt5/layout/)
布局管理是我们将小部件放置在应用窗口中的方式。 我们可以使用 _ 绝对定位 _ 或 _ 布局类 _ 放置小部件。 使用布局管理器管理布局是组织窗口小部件的首选方式。
布局管理是我们将小部件放置在应用窗口中的方式。 我们可以使用绝对定位或布局类放置小部件。 使用布局管理器管理布局是组织窗口小部件的首选方式。
## 绝对定位
......@@ -83,7 +83,7 @@ Figure: Absolute positioning
`QHBoxLayout``QVBoxLayout`是在水平和垂直方向排列小部件的基本布局类。
想象一下,我们想在右下角放置两个按钮。 为了创建这样的布局,我们使用一个水平框和一个垂直框。 为了创建必要的空间,我们添加了 _ 拉伸因子 _
想象一下,我们想在右下角放置两个按钮。 为了创建这样的布局,我们使用一个水平框和一个垂直框。 为了创建必要的空间,我们添加了拉伸因子
`buttons.py`
......
......@@ -14,9 +14,9 @@ GUI 应用是事件驱动的。 事件主要由应用的用户生成。 但是
* 事件对象
* 事件目标
_ 事件源 _ 是状态更改的对象。 它生成事件。 _ 事件对象 _(事件)将状态更改封装在事件源中。 _ 事件目标 _ 是要通知的对象。 事件源对象将处理事件的任务委托给事件目标。
事件源是状态更改的对象。 它生成事件。事件对象(事件)将状态更改封装在事件源中。事件目标是要通知的对象。 事件源对象将处理事件的任务委托给事件目标。
PyQt5 具有独特的信号和槽机制来处理事件。 信号和槽用于对象之间的通信。 当发生特定事件时,会发出 _ 信号 _。 _ 槽 _ 可以是任何 Python 可调用的。 发出连接信号时,将调用槽。
PyQt5 具有独特的信号和槽机制来处理事件。 信号和槽用于对象之间的通信。 当发生特定事件时,会发出信号。槽可以是任何 Python 可调用的。 发出连接信号时,将调用槽。
## 信号和槽
......@@ -84,7 +84,7 @@ sld.valueChanged.connect(lcd.display)
在这里,我们将滑块的`valueChanged`信号连接到`lcd`号的`display`槽。
_ 发送器 _ 是发送信号的对象。 _ 接收器 _ 是接收信号的对象。 _ 槽 _ 是对信号做出反应的方法。
发送器是发送信号的对象。接收器是接收信号的对象。槽是对信号做出反应的方法。
![Signal & slot](img/d4aadaf930aa407dc29dfa190ddedb8e.jpg)
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/pyqt5/painting/](http://zetcode.com/gui/pyqt5/painting/)
PyQt5 绘画系统能够呈现量图形,图像和轮廓基于字体的文本。 当我们想要更改或增强现有的小部件,或者从头开始创建自定义小部件时,应用中需要绘画。 要进行绘制,我们使用 PyQt5 工具包提供的绘制 API。
PyQt5 绘画系统能够呈现量图形,图像和轮廓基于字体的文本。 当我们想要更改或增强现有的小部件,或者从头开始创建自定义小部件时,应用中需要绘画。 要进行绘制,我们使用 PyQt5 工具包提供的绘制 API。
## `QPainter`
......@@ -287,7 +287,7 @@ qp.drawRect(10, 15, 90, 60)
```
在这里,我们定义了一个画笔并绘制了一个矩形。 _ 笔刷 _ 是用于绘制形状背景的基本图形对象。 `drawRect()`方法接受四个参数。 前两个是轴上的 x 和 y 值。 第三个和第四个参数是矩形的宽度和高度。 该方法使用当前的笔和画笔绘制矩形。
在这里,我们定义了一个画笔并绘制了一个矩形。笔刷是用于绘制形状背景的基本图形对象。 `drawRect()`方法接受四个参数。 前两个是轴上的 x 和 y 值。 第三个和第四个参数是矩形的宽度和高度。 该方法使用当前的笔和画笔绘制矩形。
![Colours](img/9f898e2cb31a9e925a78b6995f0f3459.jpg)
......
......@@ -2,11 +2,11 @@
> 原文: [http://zetcode.com/gui/winapi/introduction/](http://zetcode.com/gui/winapi/introduction/)
这是 Windows API 教程。 本教程将教您使用 C 编程语言进行 Windows API 编程的基础知识和更高级的主题。 它不涵盖 MFC。 (Microsoft Foundation Classes 是一个广泛使用的 C++ 库,用于在 Windows 上开发 C++ 应用。)本教程已在 Windows 7 上创建并经过测试。示例使用 _Pelles C 编译器构建。_ 如果您打算阅读本教程,建议您下载并安装此编译器。 (这是一个免费软件。)如果要使用其他编译器,请确保它支持 C99 标准。
这是 Windows API 教程。 本教程将教您使用 C 编程语言进行 Windows API 编程的基础知识和更高级的主题。 它不涵盖 MFC。 (Microsoft Foundation Classes 是一个广泛使用的 C++ 库,用于在 Windows 上开发 C++ 应用。)本教程已在 Windows 7 上创建并经过测试。示例使用 Pelles C 编译器构建。如果您打算阅读本教程,建议您下载并安装此编译器。 (这是一个免费软件。)如果要使用其他编译器,请确保它支持 C99 标准。
## Windows API
Windows API 是用于创建 Windows 应用的应用编程接口。 为了创建 Windows 应用,我们必须下载 _Windows SDK_ 。 (以前称为 Platform SDK。)SDK(软件开发工具包)包含使用 Windows API 开发应用的头文件,库,示例,文档和工具。 Windows API 是为 C 和 C++ 编程语言创建的。 这是创建 Windows 应用的最直接方法。 (如果我们安装 Pelles C,则已经包含 Windows SDK。)
Windows API 是用于创建 Windows 应用的应用编程接口。 为了创建 Windows 应用,我们必须下载 Windows SDK。 (以前称为 Platform SDK。)SDK(软件开发工具包)包含使用 Windows API 开发应用的头文件,库,示例,文档和工具。 Windows API 是为 C 和 C++ 编程语言创建的。 这是创建 Windows 应用的最直接方法。 (如果我们安装 Pelles C,则已经包含 Windows SDK。)
Windows API 可以分为几个区域:
......@@ -18,7 +18,7 @@ Windows API 可以分为几个区域:
* Windows 外壳
* 联网
_ 基本服务 _ 提供对 Windows 上基本资源的访问。 这些包括文件系统,设备,进程,线程,注册表或错误处理。 _ 安全 _ 区域提供功能,接口,对象和其他编程元素,用于身份验证,授权,加密和其他与安全相关的任务。 _ 图形 _ 子系统提供了将图形内容输出到监视器,打印机和其他输出设备的功能。 _ 用户界面 _ 提供创建窗口和控件的功能。 _ 多媒体 _ 组件提供了用于处理视频,声音和输入设备的工具。 _Windows Shell_ 界面的功能允许应用访问操作系统外壳提供的功能。 _ 网络服务 _ 提供对 Windows OS 网络功能的访问。
基本服务提供对 Windows 上基本资源的访问。 这些包括文件系统,设备,进程,线程,注册表或错误处理。安全区域提供功能,接口,对象和其他编程元素,用于身份验证,授权,加密和其他与安全相关的任务。图形子系统提供了将图形内容输出到监视器,打印机和其他输出设备的功能。用户界面提供创建窗口和控件的功能。多媒体组件提供了用于处理视频,声音和输入设备的工具。 Windows Shell 界面的功能允许应用访问操作系统外壳提供的功能。网络服务提供对 Windows OS 网络功能的访问。
Windows API 是 Windows 操作系统编程接口的抽象规范。 它由函数,联合,结构,数据类型,宏,常量和其他编程元素的声明组成。 Windows API 主要由 MSDN(Microsoft 开发人员网络)描述,并且位于 Windows C 标头中。 Windows API 函数的正式实现位于动态库(DLL)中。 例如,Windows 系统目录中的`kernel32.dll``user32.dll``gdi32.dll``shell32.dll`。 Windows API 有第三方实现:最著名的是 Wine 项目和 ReactOS 项目。
......
......@@ -6,9 +6,9 @@
## 俄罗斯方块
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 _Alexey Pajitnov_ 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 Alexey Pajitnov 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 _tetrominoes_ :S 形,Z 形,T 形,L 形,线形,MirroredL 形和 正方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 tetrominoes:S 形,Z 形,T 形,L 形,线形,MirroredL 形和 正方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
![Tetrominoes](img/f9c5f32cc4ee94976ca72afe3d92c073.jpg)
......@@ -755,7 +755,7 @@ def removeFullLines(self):
```
如果片段触底,我们将调用`removeFullLines()`方法。 我们找出所有实线并将其删除。 通过将所有行移动到当前全行上方来将其向下移动一行来实现。 请注意,我们颠倒了要删除的行的顺序。 否则,它将无法正常工作。 在我们的情况下,我们使用 _ 天真重力 _。 这意味着碎片可能会漂浮在空的间隙上方。
如果片段触底,我们将调用`removeFullLines()`方法。 我们找出所有实线并将其删除。 通过将所有行移动到当前全行上方来将其向下移动一行来实现。 请注意,我们颠倒了要删除的行的顺序。 否则,它将无法正常工作。 在我们的情况下,我们使用朴素重力。 这意味着碎片可能会漂浮在空的间隙上方。
```
def newPiece(self):
......
......@@ -1015,7 +1015,7 @@ Local datetime: Sat Oct 31 20:09:44 2015
电脑也有自己的纪元。 最受欢迎的版本之一是 Unix 纪元。 Unix 纪元是 1970 年 1 月 1 日 UTC 时间 00:00:00(或 1970-01-01T00:00:00Z ISO 8601)。 计算机中的日期和时间是根据自该计算机或平台的定义时期以来经过的秒数或时钟滴答数确定的。
_Unix 时间 _ 是自 Unix 纪元以来经过的秒数。
Unix 时间 是自 Unix 纪元以来经过的秒数。
```
$ date +%s
......
......@@ -10,11 +10,11 @@
* 事件对象
* 事件目标
_ 事件源 _ 是状态更改的对象。 它生成事件。 _ 事件对象 _(事件)将状态更改封装在事件源中。 _ 事件目标 _ 是要通知的对象。 事件源对象将处理事件的任务委托给事件目标。
事件源是状态更改的对象。 它生成事件。事件对象(事件)将状态更改封装在事件源中。事件目标是要通知的对象。 事件源对象将处理事件的任务委托给事件目标。
当我们调用应用的`exec()`方法时,应用进入主循环。 主循环获取事件并将其发送到对象。 Qt 具有独特的信号和槽机制。 该信号和槽机制是 C++ 编程语言的扩展。
信号和槽用于对象之间的通信。 当发生特定事件时,会发出 _ 信号 _。 _ 槽 _ 是正常的 C++ 方法; 发出与其连接的信号时调用它。
信号和槽用于对象之间的通信。 当发生特定事件时,会发出信号。槽是正常的 C++ 方法; 发出与其连接的信号时调用它。
## 点击
......
......@@ -6,7 +6,7 @@
## Snake
Snake 是较旧的经典视频游戏。 它最初是在 70 年代后期创建的。 后来它被带到 PC 上。 在这个游戏中,玩家控制蛇。 目的是尽可能多地吃苹果。 蛇每次吃一个苹果,它的身体就会长大。 蛇必须避开墙壁和自己的身体。 该游戏有时称为 _Nibbles_
Snake 是较旧的经典视频游戏。 它最初是在 70 年代后期创建的。 后来它被带到 PC 上。 在这个游戏中,玩家控制蛇。 目的是尽可能多地吃苹果。 蛇每次吃一个苹果,它的身体就会长大。 蛇必须避开墙壁和自己的身体。 该游戏有时称为 Nibbles
## 发展历程
......
......@@ -19,11 +19,11 @@
## Tkinter
_Tkinter_ 是与 Tk GUI 工具包的 Python 绑定。 Tk 是 Tcl 语言的原始 GUI 库。 Tkinter 被实现为 Python 封装程序,围绕着嵌入在 Python 解释器中的完整 Tcl 解释器。
Tkinter 是与 Tk GUI 工具包的 Python 绑定。 Tk 是 Tcl 语言的原始 GUI 库。 Tkinter 被实现为 Python 封装程序,围绕着嵌入在 Python 解释器中的完整 Tcl 解释器。
## 电子书
ZetCode 上有独特的 _ 电子书 _ [Tkinter 编程](/ebooks/tkinter/); PDF 格式,包含 200 页和 89 个代码示例。
ZetCode 上有独特的电子书 [Tkinter 编程](/ebooks/tkinter/); PDF 格式,包含 200 页和 89 个代码示例。
## 相关教程
......
......@@ -8,11 +8,11 @@
## Tkinter
_Tkinter_ 是与 Tk GUI 工具包的 Python 绑定。 Tk 是 Tcl 语言的原始 GUI 库。 Tkinter 被实现为 Python 封装程序,围绕着嵌入在 Python 解释器中的完整 Tcl 解释器。 还有其他几种流行的 Python GUI 工具箱。 最受欢迎的是 wxPython,PyQt 和 PyGTK。
Tkinter 是与 Tk GUI 工具包的 Python 绑定。 Tk 是 Tcl 语言的原始 GUI 库。 Tkinter 被实现为 Python 封装程序,围绕着嵌入在 Python 解释器中的完整 Tcl 解释器。 还有其他几种流行的 Python GUI 工具箱。 最受欢迎的是 wxPython,PyQt 和 PyGTK。
## Python
![python logo](img/53df83c70e2382b3b708f4c509774c4c.jpg) Python 是一种通用的,动态的,面向对象的编程语言。 Python 语言的设计目的强调程序员的生产力和代码可读性。 Python 最初是由 _Guido van Rossum_ 开发的。 它于 1991 年首次发布。Python 受 ABC,Haskell,Java,Lisp,Icon 和 Perl 编程语言的启发。 Python 是一种高级,通用,多平台,解释性语言。 Python 是一种简约语言。 它最明显的特征之一是它不使用分号或括号。 Python 使用缩进代替。 目前,Python 有两个主要分支:Python 2.x 和 Python3.x。 Python 3.x 打破了与早期版本 Python 的向后兼容性。 它的创建是为了纠正该语言的某些设计缺陷并使该语言更简洁。 本教程使用 Python 2.x 编写。 大多数代码是用 Python 2.x 版本编写的。 软件基础和程序员将需要一些时间才能迁移到 Python3.x。 今天,Python 由世界各地的一大批志愿者维护。 Python 是开源软件。
![python logo](img/53df83c70e2382b3b708f4c509774c4c.jpg) Python 是一种通用的,动态的,面向对象的编程语言。 Python 语言的设计目的强调程序员的生产力和代码可读性。 Python 最初是由 Guido van Rossum 开发的。 它于 1991 年首次发布。Python 受 ABC,Haskell,Java,Lisp,Icon 和 Perl 编程语言的启发。 Python 是一种高级,通用,多平台,解释性语言。 Python 是一种简约语言。 它最明显的特征之一是它不使用分号或括号。 Python 使用缩进代替。 目前,Python 有两个主要分支:Python 2.x 和 Python3.x。 Python 3.x 打破了与早期版本 Python 的向后兼容性。 它的创建是为了纠正该语言的某些设计缺陷并使该语言更简洁。 本教程使用 Python 2.x 编写。 大多数代码是用 Python 2.x 版本编写的。 软件基础和程序员将需要一些时间才能迁移到 Python3.x。 今天,Python 由世界各地的一大批志愿者维护。 Python 是开源软件。
对于那些想学习编程的人来说,Python 是一个理想的起点。
......
......@@ -198,7 +198,7 @@ User name: Jano
## 当前目录
_ 当前目录 _ 是用户所在或正在使用的目录。 在 Windows API 中,`SetCurrentDirectoryW()`更改当前目录,`GetCurrentDirectoryW()`检索当前目录。
当前目录是用户所在或正在使用的目录。 在 Windows API 中,`SetCurrentDirectoryW()`更改当前目录,`GetCurrentDirectoryW()`检索当前目录。
`current_directory.c`
......@@ -461,7 +461,7 @@ Free virtual memory: 8796052586496
## 已知资料夹
从 Windows Vista 开始,使用新系统来标识 Windows 中的重要目录。 它被称为 _ 已知文件夹 _。 已知文件夹使用一组 GUID(全局唯一标识符)值来引用重要文件夹。
从 Windows Vista 开始,使用新系统来标识 Windows 中的重要目录。 它被称为已知文件夹。 已知文件夹使用一组 GUID(全局唯一标识符)值来引用重要文件夹。
`SHGetKnownFolderPath()`函数检索由文件夹 ID 标识的已知文件夹的完整路径。
......
......@@ -279,7 +279,7 @@ Label {
```
标签的`text`属性绑定到滑块的 value 属性。 这称为属性 _ 绑定 _
标签的`text`属性绑定到滑块的 value 属性。 这称为属性绑定
![Slider](img/8cded1e3bc8945ae7c2c860a6f2493f6.jpg)
......
......@@ -28,9 +28,9 @@ Swing 是 Java 编程语言的主要 GUI 工具包。 它是 JFC(Java 基础
## 电子书
[高级 Java Swing](/ebooks/advancedjavaswing/) _ 电子书 _ 涵盖了高级 Java Swing 主题。 它具有 621 页和 206 个代码示例。
[高级 Java Swing](/ebooks/advancedjavaswing/) 电子书涵盖了高级 Java Swing 主题。 它具有 621 页和 206 个代码示例。
还有用于 Swing 布局管理过程的 _ 电子书 _[Java Swing 布局管理教程](/ebooks/javaswinglayout/)
还有用于 Swing 布局管理过程的电子书[Java Swing 布局管理教程](/ebooks/javaswinglayout/)
## 相关教程
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/tutorials/javaswingtutorial/swinglayoutmanagement/](http://zetcode.com/tutorials/javaswingtutorial/swinglayoutmanagement/)
Java Swing 具有两种组件:容器和子组件。 容器将孩子分组为合适的布局。 要创建布局,我们使用 _ 布局管理器 _
Java Swing 具有两种组件:容器和子组件。 容器将孩子分组为合适的布局。 要创建布局,我们使用布局管理器
[Tweet](https://twitter.com/share)
......@@ -32,7 +32,7 @@ Swing 有大量可用的布局管理器-内置和第三方。 但是,大多数
## 过时的管理器遇到的问题
过时的管理器要么太简单(`FlowLayout``GridLayout`),要么就是不必要的复杂(`GridBagLayout`)。 所有这些管理器都有一个基本的设计错误:_ 他们使用组件之间的固定间隙 _。 在组件之间使用刚性空间是不可移植的:一旦在不同的屏幕分辨率下运行程序,用户界面就会损坏。
过时的管理器要么太简单(`FlowLayout``GridLayout`),要么就是不必要的复杂(`GridBagLayout`)。 所有这些管理器都有一个基本的设计错误:他们使用组件之间的固定间隙。 在组件之间使用刚性空间是不可移植的:一旦在不同的屏幕分辨率下运行程序,用户界面就会损坏。
过时的管理器试图通过一种称为嵌套的技术来修复其弱点。 在嵌套中,开发人员在多个面板中使用几个不同的布局管理器。 尽管可以使用嵌套创建 UI,但它给代码带来了额外的不必要的复杂性。
......@@ -127,7 +127,7 @@ area.setPreferredSize(new Dimension(100, 100));
```
流布局管理器为其组件设置 _ 首选 _ 大小。 因此,在我们的案例中,区域组件将为 100x100px。 如果我们未设置首选大小,则组件将具有其文本的大小。 没有文本,该组件将根本不可见。 尝试在区域组件中编写或删除一些文本。 组件将相应地增长和收缩。
流布局管理器为其组件设置首选大小。 因此,在我们的案例中,区域组件将为 100x100px。 如果我们未设置首选大小,则组件将具有其文本的大小。 没有文本,该组件将根本不可见。 尝试在区域组件中编写或删除一些文本。 组件将相应地增长和收缩。
```
panel.add(area);
......@@ -223,7 +223,7 @@ Figure: GridLayout
`BorderLayout`是一个简单的布局管理器,在某些布局中可以派上用场。 它是`JFrame``JWindow``JDialog``JInternalFrame``JApplet`的默认布局管理器。 它有一个严重的局限性-它以像素为单位设置子元素之间的间隙,从而创建了刚性的布局。 这导致了不可移植的 UI,因此不建议使用它。
`BorderLayout`将空间分为五个区域:北,西,南,东和中心。 每个区域只能有一个组件。 如果需要在一个区域中放置更多组件,则必须在其中放置一个由我们选择的管理器组成的小组。 N,W,S,E 区域中的组件具有 _ 首选 _ 大小。 中间的组件占据了剩余的整个空间。
`BorderLayout`将空间分为五个区域:北,西,南,东和中心。 每个区域只能有一个组件。 如果需要在一个区域中放置更多组件,则必须在其中放置一个由我们选择的管理器组成的小组。 N,W,S,E 区域中的组件具有首选大小。 中间的组件占据了剩余的整个空间。
如果子组件彼此之间距离太近,则看起来不太好。 我们必须在它们之间留一些空间。 Swing 工具箱中的每个组件的边缘都可以带有边框。 要创建边框,我们可以创建`EmptyBorder`类的新实例,或者使用`BorderFactory`
......
......@@ -12,7 +12,7 @@
* 事件对象
* 事件监听器
_ 事件源 _ 是状态更改的对象。 它生成事件。 _ 事件对象 _(事件)将状态更改封装在事件源中。 _ 事件监听器 _ 是要通知的对象。 事件源对象将处理事件的任务委托给事件监听器。
事件源是状态更改的对象。 它生成事件。事件对象(事件)将状态更改封装在事件源中。事件监听器是要通知的对象。 事件源对象将处理事件的任务委托给事件监听器。
Java Swing 工具箱中的事件处理功能非常强大且灵活。 Java 使用事件委托模型。 我们指定发生特定事件时要通知的对象。
......@@ -284,7 +284,7 @@ var closeBtn = new JButton("Close");
```
“关闭”按钮是 _ 事件源 _。 它将生成事件。
“关闭”按钮是事件源。 它将生成事件。
```
closeBtn.addActionListener(new ActionListener() {
......@@ -297,7 +297,7 @@ closeBtn.addActionListener(new ActionListener() {
```
在这里,我们 _ 使用按钮注册 _ 一个动作监听器。 事件被发送到 _ 事件目标 _。 在我们的案例中,事件目标是`ActionListener`类; 在此代码中,我们使用 _ 匿名内部类 _
在这里,我们使用按钮注册一个动作监听器。 事件被发送到事件目标。 在我们的案例中,事件目标是`ActionListener`类; 在此代码中,我们使用匿名内部类
```
closeBtn.addActionListener((ActionEvent event) -> {
......
......@@ -4,9 +4,9 @@
对话框窗口或对话框是大多数现代 GUI 应用必不可少的部分。 对话被定义为两个或更多人之间的对话。 在计算机应用中,对话框是一个窗口,用于与应用“对话”。 对话框用于输入数据,修改数据,更改应用设置等。对话框是用户与计算机程序之间进行通信的重要手段。
在 Java Swing 中,我们可以创建两种对话框:标准对话框和自定义对话框。 _ 自定义对话框 _ 由程序员创建。 它们基于`JDialog`类。 _ 标准对话框 _ 是 Swing 工具箱中可用的预定义对话框,例如`JColorChooser``JFileChooser`。 这些是用于常见编程任务的对话框,例如显示文本,接收输入,加载和保存文件。 它们节省了程序员的时间,并增强了一些标准行为。
在 Java Swing 中,我们可以创建两种对话框:标准对话框和自定义对话框。自定义对话框由程序员创建。 它们基于`JDialog`类。标准对话框 是 Swing 工具箱中可用的预定义对话框,例如`JColorChooser``JFileChooser`。 这些是用于常见编程任务的对话框,例如显示文本,接收输入,加载和保存文件。 它们节省了程序员的时间,并增强了一些标准行为。
对话框有两种基本类型:模式对话框和无模式对话框。 _ 模态对话框 _ 阻止输入到其他顶级窗口。 _ 无模式 _ 对话框允许输入其他窗口。 打开文件对话框是模式对话框的一个很好的例子。 选择要打开的文件时,不应进行其他操作。 典型的无模式对话框是查找文本对话框。 能够在文本控件中移动光标并定义从何处开始查找特定文本很方便。
对话框有两种基本类型:模态对话框和非模态对话框。模态对话框阻止输入到其他顶级窗口。非模态对话框允许输入其他窗口。 打开文件对话框是模态对话框的一个很好的例子。 选择要打开的文件时,不应进行其他操作。 典型的非模态对话框是查找文本对话框。 能够在文本控件中移动光标并定义从何处开始查找特定文本很方便。
## 消息对话框
......
......@@ -6,7 +6,7 @@ Swing 工程师创建了 Swing 工具箱,实现了修改后的 MVC 设计模
传统的 MVC 模式将应用分为三个部分:模型,视图和控制器。 该模型表示应用中的数据。 视图是数据的视觉表示。 最后,控制器处理并响应事件(通常是用户操作),并可以调用模型上的更改。 这个想法是通过引入一个中间组件:控制器,将数据访问和业务逻辑与数据表示和用户交互分开。
Swing 工具箱使用修改后的 MVC 设计模式。 对于视图和控制器,它只有一个 _UI 对象 _。 有时将这种修改后的 MVC 称为 _ 可分离模型体系结构 _
Swing 工具箱使用修改后的 MVC 设计模式。 对于视图和控制器,它只有一个 UI 对象。 有时将这种修改后的 MVC 称为可分离模型体系结构
在 Swing 工具箱中,每个组件都有其模型,甚至包括按钮之类的基本组件。 Swing 工具箱中有两种模型:
......
......@@ -1077,7 +1077,7 @@ C:\Users\Jano\Documents\Pelles C Projects\timedate\CompareTime>CompareTime.exe
## 时区
_ 时区 _ 是一个使用相同标准时间的区域。 世界上有 24 个时区。
时区是一个使用相同标准时间的区域。 世界上有 24 个时区。
```
UTC = local time + bias
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/tutorials/javaswingtutorial/painting/](http://zetcode.com/tutorials/javaswingtutorial/painting/)
Swing 的绘画系统能够渲染量图形,图像和轮廓基于字体的文本。
Swing 的绘画系统能够渲染量图形,图像和轮廓基于字体的文本。
[Tweet](https://twitter.com/share)
......@@ -10,11 +10,11 @@ Swing 的绘画系统能够渲染矢量图形,图像和轮廓基于字体的
绘画是在`paintComponent()`方法中完成的。 在绘画过程中,我们使用`Graphics2D`对象。
## Swing 2D 量图形
## Swing 2D 量图形
有两种不同的计算机图形:矢量图形和栅格图形。 栅格图形将图像表示为像素的集合。 矢量图形是使用诸如点,线,曲线或多边形之类的几何图元来表示图像。 这些基元是使用数学方程式创建的。
有两种不同的计算机图形:向量图形和栅格图形。 栅格图形将图像表示为像素的集合。 向量图形是使用诸如点,线,曲线或多边形之类的几何图元来表示图像。 这些基元是使用数学方程式创建的。
两种类型的计算机图形都有优点和缺点。 量图形优于栅格的优点是:
两种类型的计算机图形都有优点和缺点。 量图形优于栅格的优点是:
* 较小的尺寸
* 无限放大的能力
......@@ -271,7 +271,7 @@ public class LinesEx extends JFrame {
```
在示例中,我们绘制了五条线。 第一行使用默认值绘制。 其他将具有不同的 _ 中风 _。 使用`BasicStroke`类创建笔划。 它为图形基元的轮廓定义了一组基本的渲染属性。
在示例中,我们绘制了五条线。 第一行使用默认值绘制。 其他将具有不同的粗细。 使用`BasicStroke`类创建笔划。 它为图形基元的轮廓定义了一组基本的渲染属性。
```
float[] dash1 = { 2f, 0f, 2f };
......@@ -777,7 +777,7 @@ g2d.setRenderingHints(rh);
```
这段代码是为了使我们的文本看起来更好。 我们使用`RenderingHints`应用称为 _ 抗锯齿 _ 的技术。
这段代码是为了使我们的文本看起来更好。 我们使用`RenderingHints`应用称为抗锯齿的技术。
```
var font = new Font("URW Chancery L", Font.BOLD, 21);
......@@ -796,7 +796,7 @@ g2d.drawString("Not marble, nor the gilded monuments", 20, 30);
## Swing 绘制图像
工具包最重要的功能之一就是显示图像的能力。 图像是像素阵列。 每个像素代表给定位置的颜色。 我们可以使用`JLabel`之类的组件来显示图像,也可以使用 _Java 2D API_ 绘制图像。
工具包最重要的功能之一就是显示图像的能力。 图像是像素阵列。 每个像素代表给定位置的颜色。 我们可以使用`JLabel`之类的组件来显示图像,也可以使用 Java 2D API 绘制图像。
`DrawImageEx.java`
......
......@@ -6,9 +6,9 @@
## 俄罗斯方块
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 _Alexey Pajitnov_ 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 Alexey Pajitnov 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 _tetrominoes_ :S 形,Z 形,T 形,L 形,线形,MirroredL 形和方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 tetrominoes:S 形,Z 形,T 形,L 形,线形,MirroredL 形和方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以使其尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
![Tetrominoes](img/d1d569f8a3f688e94807db3a4860716f.jpg)
......@@ -882,7 +882,7 @@ for (int i = BOARD_HEIGHT - 1; i >= 0; --i) {
```
`removeFullLines()`方法内部,我们检查`board`的所有行中是否有完整的行。 如果至少有一条实线,则将其删除。 找到整条线后,我们增加计数器。 我们将整行上方的所有行向下移动一行。 这样我们就破坏了整个生产线。 注意,在我们的俄罗斯方块游戏中,我们使用了所谓的天真重力。 这意味着正方形可能会漂浮在空白间隙上方。
`removeFullLines()`方法内部,我们检查`board`的所有行中是否有完整的行。 如果至少有一条实线,则将其删除。 找到整条线后,我们增加计数器。 我们将整行上方的所有行向下移动一行。 这样我们就破坏了整个生产线。 注意,在我们的俄罗斯方块游戏中,我们使用了所谓的朴素重力。 这意味着正方形可能会漂浮在空白间隙上方。
每个俄罗斯方块都有四个正方形。 每个正方形都使用`drawSquare()`方法绘制。 俄罗斯方块有不同的颜色。
......
......@@ -23,4 +23,4 @@ JavaFX 是用于开发和交付可在各种设备上运行的富 Internet 应用
## 相关教程
[Java Swing 教程](/tutorials/javaswingtutorial/)涵盖了 Swing。 [高级 Java Swing](/ebooks/advancedjavaswing/) _ 电子书 _ 涵盖了高级 Java Swing 主题。 [Java SWT 教程](/gui/javaswt/)涵盖了第三方 SWT 工具包。 [Java 2D 游戏教程](/tutorials/javagamestutorial/)[Java 2D 教程](/gfx/java2d/)进一步增强了您对 Java 图形编程的了解。 [Java 教程](/lang/java/)教授 Java 语言的基础知识。
\ No newline at end of file
[Java Swing 教程](/tutorials/javaswingtutorial/)涵盖了 Swing。 [高级 Java Swing](/ebooks/advancedjavaswing/) 电子书涵盖了高级 Java Swing 主题。 [Java SWT 教程](/gui/javaswt/)涵盖了第三方 SWT 工具包。 [Java 2D 游戏教程](/tutorials/javagamestutorial/)[Java 2D 教程](/gfx/java2d/)进一步增强了您对 Java 图形编程的了解。 [Java 教程](/lang/java/)教授 Java 语言的基础知识。
\ No newline at end of file
......@@ -6,7 +6,7 @@
## 关于 JavaFX
_JavaFX_ 是用于开发和交付可在多种设备上运行的富 Internet 应用(RIA)的软件平台。 JavaFX 是用于 Java 平台的下一代 GUI 工具包。 它与 Java SE Runtime Environment(JRE)和 Java Development Kit(JDK)的最新版本完全集成。
JavaFX 是用于开发和交付可在多种设备上运行的富 Internet 应用(RIA)的软件平台。 JavaFX 是用于 Java 平台的下一代 GUI 工具包。 它与 Java SE Runtime Environment(JRE)和 Java Development Kit(JDK)的最新版本完全集成。
JavaFX 具有以下主要部分:
......@@ -15,17 +15,17 @@ JavaFX 具有以下主要部分:
* 媒体引擎
* 网页引擎
_Prism_ 是用于 2D 和 3D 图形的高性能图形引擎。 _Glass_ 窗口工具箱是一个依赖于平台的层,将 JavaFX 连接到本机操作系统。 它提供本机操作系统服务,例如管理窗口,事件,计时器和表面。 _ 媒体 _ 引擎提供了用于创建媒体应用的工具,这些应用允许在支持的平台上的桌面窗口或网页内播放媒体。 _Web_ 引擎是一种网络浏览器引擎,支持 HTML5,CSS,JavaScript,DOM 和 SVG。
Prism 是用于 2D 和 3D 图形的高性能图形引擎。Glass 窗口工具箱是一个依赖于平台的层,将 JavaFX 连接到本机操作系统。 它提供本机操作系统服务,例如管理窗口,事件,计时器和表面。媒体引擎提供了用于创建媒体应用的工具,这些应用允许在支持的平台上的桌面窗口或网页内播放媒体。Web 引擎是一种网络浏览器引擎,支持 HTML5,CSS,JavaScript,DOM 和 SVG。
## JavaFX 应用剖析
`Application`是 JavaFX 程序的主要类。 每个 JavaFX 程序必须扩展`Application`类。 其`start()`方法是应用的主要入口点; 这是系统准备就绪后要调用的第一个方法。 JavaFX 应用中不需要`main()`方法; 当在某些情况下无法启动应用时,它可以用作备用。
JavaFX 应用由`Stage``Scene`组成。 `Stage`是顶级容器,是应用的主窗口。 (对于嵌入在 Web 浏览器中的应用,它是主要的矩形区域。)`Scene``Stage`可视内容的容器。 `Scene's`内容被组织在 _ 场景图 _ 中。 这两个术语反映了从桌面应用到更通用的富 Internet 应用的转变。
JavaFX 应用由`Stage``Scene`组成。 `Stage`是顶级容器,是应用的主窗口。 (对于嵌入在 Web 浏览器中的应用,它是主要的矩形区域。)`Scene``Stage`可视内容的容器。 `Scene's`内容被组织在场景图中。 这两个术语反映了从桌面应用到更通用的富 Internet 应用的转变。
## 场景图
场景图是节点的分层树,代表应用用户界面的所有可视元素。 场景图中的单个元素称为节点。 每个节点都是分支节点或叶节点。 分支节点可以包含其他节点(它们的子节点)。 叶节点不包含其他节点。 树中的第一个节点称为 _ 根节点 _; 根节点没有父节点。
场景图是节点的分层树,代表应用用户界面的所有可视元素。 场景图中的单个元素称为节点。 每个节点都是分支节点或叶节点。 分支节点可以包含其他节点(它们的子节点)。 叶节点不包含其他节点。 树中的第一个节点称为根节点; 根节点没有父节点。
节点的具体实现包括图形基元,控件,布局管理器,图像或媒体。 可以通过修改节点属性来操纵场景。 这样,我们可以为节点设置动画,应用效果,进行变换或更改其不透明度。
......
......@@ -191,7 +191,7 @@ Figure: Tooltip
助记符是激活支持助记符的控件的快捷键。 例如,它们可以与标签,按钮或菜单项一起使用。
助记符是通过在控件的标签上添加 _ 字符来创建的。 它使下一个字符成为助记符。 字符与无鼠标修饰符(通常为 `Alt` )结合在一起。 选择的字符带有下划线,但是可以以平台特定的方式强调。 在某些平台上,仅在按下无鼠标修饰符后才对字符加下划线。
助记符是通过在控件的标签上添加`_`字符来创建的。 它使下一个字符成为助记符。 字符与无鼠标修饰符(通常为 `Alt` )结合在一起。 选择的字符带有下划线,但是可以以平台特定的方式强调。 在某些平台上,仅在按下无鼠标修饰符后才对字符加下划线。
`MnemonicEx.java`
......@@ -258,7 +258,7 @@ Button btn = new Button("_Button");
```
在按钮的标签中,_ 字符位于 B 字符之前; 因此,B 字符带有下划线,并包含在键盘快捷键中。
在按钮的标签中,`_`字符位于 B 字符之前; 因此,B 字符带有下划线,并包含在键盘快捷键中。
```
btn.setOnAction((ActionEvent event) -> {
......
......@@ -4,7 +4,7 @@
JavaFX 教程的这一部分涵盖了节点的布局管理。 我们提到了以下布局窗格:`FlowPane``HBox``BorderPane``AnchorPane``GridPane``MigPane`。 另外,我们展示了如何使用`Pane`在绝对坐标中定位节点。
_ 布局窗格 _ 是用于在 JavaFX 应用的场景图中灵活,动态地排列 UI 控件的容器。 调整窗口大小时,布局窗格会自动调整其位置和大小。
布局窗格是用于在 JavaFX 应用的场景图中灵活,动态地排列 UI 控件的容器。 调整窗口大小时,布局窗格会自动调整其位置和大小。
JavaFX 具有以下内置布局窗格:
......@@ -756,7 +756,7 @@ Figure: New folder
## `MigPane`
`MigPane`是一个非常强大的第三方布局管理器。 它使用 _MigLayout_ 管理器,可用于 Swing,SWT 和 JavaFX。 强烈建议考虑这位管理器。
`MigPane`是一个非常强大的第三方布局管理器。 它使用 MigLayout 管理器,可用于 Swing,SWT 和 JavaFX。 强烈建议考虑这位管理器。
![MigPane JARs](img/a60c0cf259e04720a73b1f82578ec043.jpg)
......
......@@ -6,7 +6,7 @@
## `wWinMain()`函数
每个 Windows UI 应用必须至少具有两个功能:WinMain 函数和 _ 窗口过程。_ WinMain 函数是 Windows UI 应用的入口点。 它初始化应用,在屏幕上显示应用窗口,然后进入主循环。 在我们的示例中,我们使用`wWinMain()`函数原型,该原型用于创建 Unicode UI 程序。
每个 Windows UI 应用必须至少具有两个功能:`WinMain`函数和窗口过程。`WinMain`函数是 Windows UI 应用的入口点。 它初始化应用,在屏幕上显示应用窗口,然后进入主循环。 在我们的示例中,我们使用`wWinMain()`函数原型,该原型用于创建 Unicode UI 程序。
```
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
......@@ -37,7 +37,7 @@ HWND CreateWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName,
## 消息内容
`WinMain()`功能创建一个 _ 消息循环 _。 在应用的生命周期中,这是一个无休止的循环。 消息循环是一种程序结构,它等待并分派程序中的事件或消息。 Windows 使用消息进行通信。 _ 消息 _ 是一个整数值,用于标识特定事件-单击按钮,调整窗口大小或关闭应用。 一次可以创建多个消息。 不能同时处理所有消息。 因此,它们存储在 _ 消息队列 _ 中。 消息进入消息队列并等待直到被处理。 `GetMessage()`功能从消息队列中检索消息。 `DispatchMessage()`函数将消息调度到窗口过程。 如果应用获得了字符输入,则在循环中包含`TranslateMessage()`函数。
`WinMain()`功能创建一个消息循环。 在应用的生命周期中,这是一个无休止的循环。 消息循环是一种程序结构,它等待并分派程序中的事件或消息。 Windows 使用消息进行通信。消息是一个整数值,用于标识特定事件-单击按钮,调整窗口大小或关闭应用。 一次可以创建多个消息。 不能同时处理所有消息。 因此,它们存储在消息队列中。 消息进入消息队列并等待直到被处理。 `GetMessage()`功能从消息队列中检索消息。 `DispatchMessage()`函数将消息调度到窗口过程。 如果应用获得了字符输入,则在循环中包含`TranslateMessage()`函数。
## 窗口过程
......
......@@ -12,7 +12,7 @@ JavaFX 中的每个事件都具有三个属性:
* 事件目标
* 事件类型
_ 事件源 _ 是状态更改的对象; 它产生事件。 _ 事件目标 _ 是事件的目的地。 _ 事件类型 _ 为相同`Event`类的事件提供了额外的分类。
事件源是状态更改的对象; 它产生事件。事件目标是事件的目的地。事件类型为相同`Event`类的事件提供了额外的分类。
事件源对象将处理事件的任务委托给事件处理程序。 当事件发生时,事件源创建一个事件对象,并将其发送到每个注册的处理程序。
......
......@@ -4,7 +4,7 @@
在本章中,我们将使用 JavaFX 中的动画。 我们使用`AnimationTimer``Transition``Timeline`创建动画。
_ 动画 _ 是连续的图像,使人产生了运动的幻觉。 但是,动画不仅限于运动。 随着时间的推移更改节点的背景也被视为动画。
动画是连续的图像,使人产生了运动的幻觉。 但是,动画不仅限于运动。 随着时间的推移更改节点的背景也被视为动画。
JavaFX 提供了三种创建动画的基本工具:
......
......@@ -6,7 +6,7 @@
## wxWidgets
_wxWidgets_ 是用于创建 C++ 应用的图形用户界面(GUI)工具包。 它是一个开源的,成熟的,跨平台的工具箱。 wxWidgets 应用可在所有主要的 OS 平台上运行,包括 Windows,Unix 和 Mac OS。 该项目由 _Julian Smart_ 于 1992 年发起。wxWidgets 不仅仅是工具包。 它提供了各种各样的类来处理流,数据库,线程,联机帮助或应用设置。 wxWidgets 包含大量的小部件。 wxWidgets 周围的社区围绕他们的[网站](http://www.wxwidgets.org)分组。
wxWidgets 是用于创建 C++ 应用的图形用户界面(GUI)工具包。 它是一个开源的,成熟的,跨平台的工具箱。 wxWidgets 应用可在所有主要的 OS 平台上运行,包括 Windows,Unix 和 Mac OS。 该项目由 Julian Smart 于 1992 年发起。wxWidgets 不仅仅是工具包。 它提供了各种各样的类来处理流,数据库,线程,联机帮助或应用设置。 wxWidgets 包含大量的小部件。 wxWidgets 周围的社区围绕他们的[网站](http://www.wxwidgets.org)分组。
## C++ 编程语言
......
......@@ -6,13 +6,13 @@
## 定义
_ 事件 _ 是来自底层框架(通常是 GUI 工具箱)的应用级信息。 _ 事件循环 _ 是一种程序结构,用于等待并调度程序中的事件或消息。 事件循环反复查找事件以对其进行处理。 _ 调度程序 _ 是将事件映射到 _ 事件处理程序 _ 的过程。 事件处理程序是对事件做出反应的方法。
事件是来自底层框架(通常是 GUI 工具箱)的应用级信息。事件循环是一种程序结构,用于等待并调度程序中的事件或消息。 事件循环反复查找事件以对其进行处理。调度程序是将事件映射到事件处理程序的过程。 事件处理程序是对事件做出反应的方法。
_ 事件对象 _ 是与事件关联的对象。 通常是一个窗口。 _ 事件类型 _ 是已生成的唯一事件。
事件对象是与事件关联的对象。 通常是一个窗口。事件类型是已生成的唯一事件。
## 一个简单的事件示例
在 wxWidgets 中处理事件的传统方法是使用 _ 静态事件表。_ 这受 Microsoft 基础类(MFC)的影响。 一种更灵活,更现代的方法是使用`Connect()`方法。 我们在整个 wxWidgets 教程中都使用它。
在 wxWidgets 中处理事件的传统方法是使用静态事件表。这受 Microsoft 基础类(MFC)的影响。 一种更灵活,更现代的方法是使用`Connect()`方法。 我们在整个 wxWidgets 教程中都使用它。
## 事件表
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/wxwidgets/widgets/](http://zetcode.com/gui/wxwidgets/widgets/)
在本章中,我们将展示 wxWidgets 中提供的几个小部件的小示例。 小部件是我们应用的构建块。 wxWidgets 包含大量有用的小部件。 _ 小部件 _ 是基本的 GUI 对象。 一个小部件为 wxWidgets 工具包命名。 该术语在 UNIX 系统上使用。 在 Windows 上,小部件通常称为控件。
在本章中,我们将展示 wxWidgets 中提供的几个小部件的小示例。 小部件是我们应用的构建块。 wxWidgets 包含大量有用的小部件。小部件是基本的 GUI 对象。 一个小部件为 wxWidgets 工具包命名。 该术语在 UNIX 系统上使用。 在 Windows 上,小部件通常称为控件。
## `wxCheckBox`
......
......@@ -2,13 +2,13 @@
> 原文: [http://zetcode.com/gui/wxwidgets/gdi/](http://zetcode.com/gui/wxwidgets/gdi/)
_GDI_`Graphics Device Interface`)是用于处理图形的界面。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。
GDI`Graphics Device Interface`)是用于处理图形的界面。 它用于与图形设备(例如监视器,打印机或文件)进行交互。 GDI 允许程序员在屏幕或打印机上显示数据,而不必担心特定设备的详细信息。 GDI 使程序员与硬件隔离。
![The GDI](img/7ab991b4a5d6202e3dd8cd5f7a77a123.jpg)
Figure: The GDI structure
从程序员的角度来看,GDI 是用于处理图形的一组类和方法。 GDI 由 2D 量图形,字体和图像组成。
从程序员的角度来看,GDI 是用于处理图形的一组类和方法。 GDI 由 2D 量图形,字体和图像组成。
要开始绘制图形,我们必须创建一个设备上下文(DC)对象。 在 wxWidgets 中,设备上下文称为`wxDC`。 该文档将`wxDC`定义为可以在其上绘制图形和文本的设备上下文。 它以通用方式表示设备数量。 同一段代码可以写入不同类型的设备。 无论是屏幕还是打印机。 `wxDC`不能直接使用。 相反,程序员应选择派生类之一。 每个派生类都打算在特定条件下使用。
......
......@@ -2,9 +2,9 @@
> 原文: [http://zetcode.com/gui/wxwidgets/thetetrisgame/](http://zetcode.com/gui/wxwidgets/thetetrisgame/)
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 _Alexey Pajitnov_ 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块游戏是有史以来最受欢迎的计算机游戏之一。 原始游戏是由俄罗斯程序员 Alexey Pajitnov 于 1985 年设计和编程的。此后,几乎所有版本的几乎所有计算机平台上都可以使用 Tetris。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 _tetrominoes_ 。 S 形,Z 形,T 形,L 形,线形,镜像 L 形和正方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以便它们尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
俄罗斯方块被称为下降块益智游戏。 在这个游戏中,我们有七个不同的形状,称为 tetrominoes。 S 形,Z 形,T 形,L 形,线形,镜像 L 形和正方形。 这些形状中的每一个都形成有四个正方形。 形状从板上掉下来。 俄罗斯方块游戏的目的是移动和旋转形状,以便它们尽可能地适合。 如果我们设法形成一行,则该行将被破坏并得分。 我们玩俄罗斯方块游戏,直到达到顶峰。
![Tetrominoes](img/07787dc89f2bce1c968c7ab3d7d89139.jpg)
......@@ -687,7 +687,7 @@ if (lineIsFull) {
```
此代码将删除所有行。 找到整条线后,我们增加计数器。 我们将整行上方的所有行向下移动一行。 这样我们就破坏了整个生产线。 注意,在俄罗斯方块游戏中,我们使用了 _ 天真引力 _。 这意味着正方形可能会漂浮在空白间隙上方。
此代码将删除所有行。 找到整条线后,我们增加计数器。 我们将整行上方的所有行向下移动一行。 这样我们就破坏了整个生产线。 注意,在俄罗斯方块游戏中,我们使用了朴素引力。 这意味着正方形可能会漂浮在空白间隙上方。
```
void Board::NewPiece()
......
......@@ -26,11 +26,11 @@
## wxPython
_wxPython_ 是用于创建桌面 GUI 应用的跨平台工具包。 使用 wxPython,开发人员可以在 Windows,Mac OS 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。
wxPython 是用于创建桌面 GUI 应用的跨平台工具包。 使用 wxPython,开发人员可以在 Windows,Mac OS 和各种 Unix 系统上创建应用。 wxPython 是 wxWidgets 的包装,wxWidgets 是成熟的跨平台 C++ 库。
## 电子书
独特的 _ 电子书 _,涵盖 wxPython 的高级功能:[高级 wxPython 教程](/ebooks/advancedwxpython/)
独特的电子书,涵盖 wxPython 的高级功能:[高级 wxPython 教程](/ebooks/advancedwxpython/)
[Tweet](https://twitter.com/share)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册