PowerBuilder 9.0进阶开发篇:实例与技巧篇书籍目录
第1章 窗口、控件与界面
1.1 类Outlook工具栏界面实现
1.2 制作Splash窗口
1.3 制作美观的编辑状态条
1.4 实现图标栏应用
1.5 MDI窗口显示背景
1.6 窗口中控件显示ToolTips
1.7 打造不一样的命令按钮
1.8 透明文本的实现
1.9 导航图界面的制作
1. 制作图文并茂的菜单
1. 窗口内控件大小与窗口大小同步
1. 动态创建控件
1. 控件融合技术
1. 小结
第2章 数据窗口技术
2.1 数据窗口PDF格式文档输出
2.2 数据窗口组合条件查询
2.3 数据窗口通用排序
2.4 数据窗口通用显示列定制窗口的实现
2.5 数据窗口中实现增量查询
2.6 数据窗口的多表更新
2.7 单击标题栏对数据窗口排序
2.8 动态数据窗口
2.9 复合数据窗口
2. 数据窗口打印处理
2. 数据窗口统计图类型的动态改变
2. 数据窗口统计图数值动态显示的实现
2. 数据窗口中按钮的封装
2. 小结
第3章 PowerScript编程
3.1 使用源代码编辑器
3.2 实现客户端程序的自动升级
3.3 进制转换
3.4 注册表函数应用
3.5 人民币大写转换函数
3.6 在应用程序中关闭外部程序
3.7 在应用程序中启动控制面板项目
3.8 非Tab分隔符文本文件导入数据窗口
3.9 编译后的程序带参数运行
3. 取当月的最后一天函数
3. 限制同一程序多次运行
3. 小结
第4章 数据库与SQL
4.1 PowerBuilder与常见数据库的连接配置
4.2 PowerBuilder+ASA8的C/S编程
4.3 数据库的并发控制
4.4 动态SQL及其应用
4.5 存取二进制大对象
4.6 PowerBuilder应用取服务器时间
4.7 PowerBuilder扩展属性系统表及其应用
4.8 连接任意ODBC数据源
4.9 可定制参数的数据库连接
4. 小结
第5章 打印专题
5.1 创建应用及打印参数表
5.2 创建数据窗口对象
5.3 创建全局结构及函数
5.4 创建打印列表窗口
5.5 创建数据显示相关窗口
5.6 创建打印用户对象
5.7 创建打印预览窗口
5.8 创建打印设置窗口
5.9 小结
第6章 用户对象
6.1 可视用户对象
6.2 不可视用户对象
6.3 小结
第7章 外部函数和WindowsAPI应用
7.1 API调用规范及方法
7.2 窗口类WindowsAPI
7.3 系统类WindowsAPI
7.4 WindowsAPI实用例程
7.5 使用第三方工具开发的动态链接库
7.6 小结
第8章 数据管道
8.1 原始数据导入
8.2 表结构处理
8.3 异种数据库数据移植
8.4 小结
第9章 DDE、OLE和COM使用技术
9.1 DDE技术
9.2 OLE技术
9.3 COM/MTS技术
9.4 小结
第章 编译、源码发行与制作安装程序
.1 程序编译
.2 应用程序运行环境配置
.3 利用InstallShield制作安装程序
.4 大型数据库客户端安装程序制作
.5 小结
第章 JaguarCTS组件编程
.1 JaguarCTS的编辑基本概念
.2 JaguarCTS的主要特性
.3 JaguarCTS的配置
.4 创建一个Jaguar应用程序
.5 在PowerBuilder9.0中实现JaguarCTS组件开发
.6 EAServer组件高级开发技巧
.7 建立客户端应用
.8 Jaguar组件执行的生命周期
.9 小结
第章 PBNI应用技术
.1 一个实现PowerBuilder非可视扩展的例子
.2 构建PowerBuilder扩展的详细步骤
.3 在C++中调用PowerBuilder内容
.4 在VisualC++中使用向导创建PBNI工程
.5 小结
谁有FreeBSD的使用手册啊?
.4 拨入服务
Contributed by Guy Helmer. Additions by Sean Kelly.
为拨入服务配置FreeBSD系统与连接到终端是非常相似的,除非您正在使用 modem来拨号而不是源码终端。
.4.1 外置vs.内置modem
外置modem看起来很容易拨号。编辑绝对底背离源码 因为,源码外置 modem 可以通过储存在非易失性的编辑RAM中的参数来配置,它们通常提供指示器来显示重要的源码RS-信号的状态。不停闪光的编辑信号灯能给用户留下比较深刻的印象,而且指示器也可以用来查看modem是源码否正常地工作。
内置modem通常缺乏非易失性的编辑RAM, 所以对它们的源码配置可能会限制在通过 DIP 开关来设置。如果您的编辑内置modem有指示灯,您也很难看得到。源码
.4.1.1 Modem和线缆
如果您使用一个外置的 modem,那您将需要适当的电缆线。一个标准的串口线应当足够长以至普通的信号能够连接上:
表 -4. 信号名称
缩写 全名
RD 收到数据 (Received Data)
TD 传出数据 (Transmitted Data)
DTR 数据终端就绪 (Data Terminal Ready)
DSR 数据集就绪 (Data Set Ready)
DCD 数据载波检测 (Data Carrier Detect) (RS- 的收到线路信号检测器)
SG 信号地 (Signal Ground)
RTS 要求发送数据 (Request to Send)
CTS 允许对方发送数据 (Clear to Send)
FreeBSD 对速度超过 bps 的情形需要通过 RTS 和 CTS 信号来完成流控制, 通过 CD 信号来检测呼叫响应和挂机,并通过 DTR 信号来在会话结束时对调制解调器进行复位。某些电缆在连接时没有提供全部需要的信号, 这会给您带来问题, 例如在挂断时登录会话不消失,这就有可能是电缆的问题。
与其它类 UNIX? 操作系统类似, FreeBSD 使用硬件信号来检测呼叫响应, 以及在挂断时挂断并复位调制解调器。 FreeBSD 避免发送命令给调制解调器, 或监视其状态。 如果您熟悉通过调制解调器来连接基于 PC 的 BBS 系统, 这可能看起来有点难用。
.4.2 串口的考虑
FreeBSD支持基于 NS, NS, NS 和 NSA 的EIA RS-C通讯接口。 和设备有单字符缓冲。 设备提供了一个 个字符的亚马逊网站源码缓冲,可以提高更多的系统性能。 因为单字符缓冲设备比 个字符的缓冲需要更多的系统资源来工作,所以基于A的接口卡可能更好。 如果系统没有活动的串口, 或有较大的负载, 字符缓冲的卡对于低错误率的通讯来说更好。
.4.3 快速预览
对于终端, init 会在每个配置串口上为每个拨入连接产生一个 getty 进程。 例如, 如果一个 modem 被附带在 /dev/ttyd0 中,用命令ps ax可以显示下面这些:
? I 0:. /usr/libexec/getty V ttyd0
当用户拨上modem, 并使用它进行连接时, CD 线就会被 modem 认出。 内核注意到载波信号已经被检测到, 需要完成 getty 端口的打开。 getty 发送一个登录:在指定的初始线速度上的命令行。 Getty 会检查合法的字符是否被接收,在典型的配置中, 如果发现 “垃圾”, getty 就会设法调节线速度,直到它接收到合理的字符。
用户在键入他/她的登录名称后, getty执行/usr/bin/login, 这会要求用户输入密码来完成登录,然后启动用户的shell。
.4.4 配置文件
如果希望允许拨入您的 FreeBSD 系统, 在 /etc 目录中有三个系统配置文件需要您关注。 其一是 /etc/gettytab,其中包含用于 /usr/libexec/getty 服务的配置信息。 其二是 /etc/ttys, 它的作用是告诉 /sbin/init 哪些 tty 设备上应该运行 getty。 最后,关于端口的初始化命令, 应放到 /etc/rc.d/serial 脚本中。
关于在 UNIX 上配置拨入调制解调器有两种主要的springcloud架构源码流派。一种是将本地计算机到调制解调器的 RS- 接口配置为固定速率。 这样做的好处是,远程用户总能立即见到系统的登录提示符, 而其缺点则是,系统并不知道用户真实的数据速率是多少, 因而, 类似 Emacs 这样的程序, 也就无法调整它们绘制屏幕的方式, 以便为慢速连接改善响应时间。
另一种流派将调制解调器的 RS- 接口速率配置为随远程用户的连接速率变化。 例如, 对 V.bis (.4 Kbps) 连接, 调制解调器会让自己的 RS- 接口以 .2 Kbps 的速率运行, 而 bps 连接, 则会使调制解调器的 RS- 接口以 bps 的速率运行。 由于 getty 并不能识别具体的调制解调器的连接速率反馈信息, 因此, getty 会以初始速度给出一个 login: 提示, 并检查用户的响应字符。如果用户看到乱码, 则他们应知道此时应按下 Enter 键,直到看到可以辨认的提示符为止。 如果数据速率不匹配, 则 getty 会将用户输入的任何信息均视为 “乱码”, 并尝试以下一种速率来再次给出 login: 提示符。 这一过程可能需要令人作呕地重复下去, 不过一般而言,用户只要敲一两下键盘就能看到正确的提示符了。 显然, 这种登录过程看起来不如前面所介绍的 “锁定速率” 方法那样简单明了, 但使用低速连接的用户,却可以在运行全屏幕程序时得到更好的交互响应。
这一节将尽可能公平地介绍关于配置的信息,但更着力于介绍调制解调器速率随连接速率变化的配置方法。
.4.4.1 /etc/gettytab
/etc/gettytab是天津深圳源码一个用来配置 getty 信息的 termcap 风格的文件。 请看看 gettytab 的联机手册了解完整的文件格式和功能列表。
.4.4.1.1 锁定速度的配置
如果您把您的modem的数据通讯率锁定在一个特殊的速度上, 您不需要对 /etc/gettytab 文件作任何变化。
.4.4.1.2 匹配速度的配置
您将需要在 /etc/gettytab 中设置一个记录来告诉 getty 您希望在 modem 上使用的速度。 如果您的 modem 的速率是 bit/s, 则可以使用现有的 D 的记录。
#
# Fast dialup terminals, // rotary (can start either way)
#
D|d|Fast-Dial-:\
:nx=D:tc=-baud:
3|D|Fast-Dial-:\
:nx=D:tc=-baud:
5|D|Fast-Dial-:\
:nx=D:tc=-baud:
如果您有一个更高速度的 modem, 必须在 /etc/gettytab 中添加一个记录。 下面是一个让您可以以最高 .2 Kbit/s 的用在 .4 Kbit/s的modem上的接口记录:
#
# Additions for a V.bis Modem
#
um|V|High Speed Modem at ,8-bit:\
:nx=V:tc=std.:
un|V|High Speed Modem at ,8-bit:\
:nx=V:tc=std.:
uo|V|High Speed Modem at ,8-bit:\
:nx=V:tc=std.:
up|V|High Speed Modem at ,8-bit:\
:nx=V:tc=std.:
uq|V|High Speed Modem at ,8-bit:\
:nx=V:tc=std.:
这样做的结果是 8-数据位, 没有奇偶校验的连接。
上面使用.2 Kbit/s的连接速度的例子,也可以使用 bit/s (for V.), bit/s, bit/s, bit/s, 直到 .2 Kbit/s。 通讯率的调节使用 nx= (“next table”) 来实现。 每条线使用一个 tc= (“table continuation”) 的记录来加速对于一个特殊传输率的标准设置。
如果您有.8 Kbit/s的modem,或您想使用它的 .4Kbit/s 模式,就需要使用一个更高的超过 .2 Kbit/s 的通讯速度的 modem。 这是一个启动 .6 Kbit/s 的 gettytab 记录的例子:
#
# Additions for a V.bis or V. Modem
# Starting at .6 Kbps
#
vm|VH|Very High Speed Modem at ,8-bit:\
:nx=VH:tc=std.:
vn|VH|Very High Speed Modem at ,8-bit:\
:nx=VH:tc=std.:
vo|VH|Very High Speed Modem at ,8-bit:\
:nx=VH:tc=std.:
vp|VH|Very High Speed Modem at ,8-bit:\
:nx=VH:tc=std.:
vq|VH|Very High Speed Modem at ,8-bit:\
:nx=VH:tc=std.:
如果您的 CPU 速度较低, 或系统的负荷很重, 而且没有 A 的串口,您可能会在.6 Kbit/s 上得到 “sio” “silo”错误。
.4.4.2 /etc/ttys
/etc/ttys文件的配置在 例 -1中介绍过。 配置 modem 是相似的, 但我们必须指定一个不同的终端类型。锁定速度和匹配速度配置的通用格式是:
ttyd0 "/usr/libexec/getty xxx" dialup on
上面的第一条是这个记录的设备特定文件 —— ttyd0 表示 /dev/ttyd0 是这个 getty 将被监视的文件。 第二条 "/usr/libexec/getty xxx" 是将运行在设备上的进程 init。 第三条,dialup,是默认的终端类型。 第四个参数, on,imencode源码分析 指出了线路是可操作的 init。也可能会有第五个参数, secure, 但它将只被用作拥有物理安全的终端 (如系统终端)。
默认的终端类型可能依赖于本地参考。 拨号是传统的默认终端类型,以至用户可以定制它们的登录脚本来注意终端什么时候拨号, 和自动调节它们的终端类型。 然而,作者发现它很容易在它的站点上指定 vt 作为默认的终端类型,因为用户刚才在它们的远程系统上使用的是VT模拟器。
您对/etc/ttys作修改之后,您可以发送 init 进程给一个 HUP 信号来重读文件。您可以使用下面的命令来发送信号:
# kill -HUP 1
如果这是您的第一次设置系统, 您可能要在发信号 init 之前等一下,等到您的 modem 正确地配置并连接好。
.4.4.2.1 锁定速度的配置
对于一个锁定速度的配置,您的 ttys 记录必须有一个为 getty 提供固定速度的记录。 对于一个速度被锁定在 .2kbit/s 的 modem, ttys 记录是这样的:
ttyd0 "/usr/libexec/getty std." dialup on
如果您的 modem 被锁定在一个不同的数据速度, 为 std.speed 使用适当的速度来代替 std.。 确信您使用了一个在 /etc/gettytab 中列出的正确的类型。
.4.4.2.2 匹配速度的设置
在一个匹配速度的设置中,您的 ttys 录需要参考在 /etc/gettytab 适当的起始 “auto-baud” 记录。 例如, 如果您为一个以 .2 Kbit/s 开始的可匹配速度的 modem 添加上面建议的记录, 您的 ttys 记录可能是这样的:
ttyd0 "/usr/libexec/getty V" dialup on
.4.4.3 /etc/rc.d/serial
高速调制解调器, 如使用 V.、 V.bis, 以及 V. 的那些, 需要使用硬件 (RTS/CTS) 流控制。 您可以在 /etc/rc.d/serial 中增加 stty 命令来在 FreeBSD 内核中, 为调制解调器设置硬件流控制标志。
例如, 在 1 号串口 (COM2) 拨入和拨出设备上配置 termios 标志 crtscts, 可以通过在 /etc/rc.d/serial 增加下面的设置来实现:
# Serial port initial configuration
stty -f /dev/ttyd1.init crtscts
stty -f /dev/cuad1.init crtscts
.4.5 Modem 设置
如果您有一个 modem, 它的参数能被存储在非易失性的 RAM 中,您将必须使用一个终端程序来设置参数 (比如 MS-DOS? 下的 Telix 或者 FreeBSD 下的 tip)。使用同样的通讯速度来连接 modem 作为初始速度 getty 将使用和配置 modem 的非易失性 RAM 来适应这些要求:
连接时宣告 CD
操作时宣告 DTR; DTR 消失时挂断线路并复位调制解调器
CTS 传输数据流控制
禁用 XON/XOFF 流控制
RTS 接收数据流控制
宁静模式 (无返回码)
无命令回显
请阅读您 modem 的文档找到您需要用什么命令和 DIP 接口设置。
例如,要在一个 U.S. Robotics? Sportster? 的外置 modem 上设置上面的参数,可以用下面这些命令:
ATZ
AT&C1&D2&H1&I0&R2&W
您也可能想要在 modem 上寻找机会调节这个设置, 例如它是否使用 V.bis 和 MNP5 压缩。
外置 modem 也有一些用来设置的 DIP 开关, 也许您可以使用这些设置作为一个例子:
Switch 1: UP —— DTR Normal
Switch 2: N/A (Verbal Result Codes/Numeric Result Codes)
Switch 3: UP —— Suppress Result Codes
Switch 4: DOWN —— No echo, offline commands
Switch 5: UP —— Auto Answer
Switch 6: UP —— Carrier Detect Normal
Switch 7: UP —— Load NVRAM Defaults
Switch 8: N/A (Smart Mode/Dumb Mode)
在拨号 modem 上的结果代码应该被 禁用/抑制, 以避免当 getty 在 modem 处于命令模式并回显输入时错误地给出 login: 提示时可能造成的问题。 这样可能导致 getty 与 modem 之间产生更长的不必要交互。
.4.5.1 锁定速度的配置
对于锁定速度的配置, 您需要配置 modem 来获得一个不依赖于通讯率的稳定的 modem到计算机 的传输率。 在一个 U.S. Robotics Sportster 外置 modem 上, 这些命令将锁定 modem 到计算机的传输率:
ATZ
AT&B1&W
.4.5.2 匹配速度的配置
对于一个变速的配置, 您需要配置 modem 调节它的串口传输率匹配接收的传输率。 在一个 U.S. Robotics Sportster 的外置 modem 上, 这些命令将锁定 modem 的错误修正传输率适合命令要求的速度,但允许串口速度适应没有纠错的连接:
ATZ
AT&B2&W
.4.5.3 检查modem的配置
大多数高速的modem提供了用来查看当前操作参数的命令。 在USR Sportster 外置modem上, 命令 ATI5 显示了存储在非易失性RAM中的设置。要看看正确的 modem 操作参数, 可以使用命令 ATZ 然后是 ATI4。
如果您有一个不同牌子的 modem, 检查 modem 的使用手册看看如何双重检查您的 modem 的配置参数。
.4.6 问题解答
这儿是几个检查拨号modem的步骤。
.4.6.1 检查FreeBSD系统
把您的modem连接到FreeBSD系统, 启动系统, 然后, 如果您的 modem 有一个指示灯,当登录时看看 modem 的 DTR 指示灯是否亮: 会在系统控制台出现命令行——如果它亮, 意味着 FreeBSD 已经在适当的通讯端口启动了一个 getty 进程, 等待 modem 接收一个呼叫。
如果DTR指示灯不亮, 通过控制台登录到 FreeBSD系统,然后执行一个 ps ax 命令来看 FreeBSD 是否正在正确的端口运行 getty进程。您将在进程显示中看到像这样的一行:
? I 0:. /usr/libexec/getty V ttyd0
? I 0:. /usr/libexec/getty V ttyd1
如果您看到是这样的:
d0 I 0:. /usr/libexec/getty V ttyd0
modem 不接收呼叫, 这意味着 getty 已经在通讯端口打开了。这可以指出线缆有问题或 modem 错误配置, 因为 getty 无法打开通讯端口。
如果您没有看到任何 getty 进程等待打开想要的 ttydN 端口, 在 /etc/ttys 中双击您的记录看看那儿是否有错误。 另外,检查日志文件 /var/log/messages 看看是否有一些来自 init 或 getty 的问题日志。 如果有任何信息, 仔细检查配置文件 /etc/ttys 和 /etc/gettytab,还有相应的设备文件 /dev/ttydN,是否有错误,丢失记录,或丢失了设备指定文件。
.4.6.2 尝试接入Try Dialing In
设法拨入系统。 确信使用8位, 没有奇偶检验, 在远程系统上的1阻止位。如果您不能立刻得到一个命令行, 试试每隔一秒按一下 Enter。如果您仍没有看到一个登录: 设法发送一个 BREAK。如果您正使用一个高速的 modem 来拨号, 请在锁定拨号 modem 的接口速度后再试试。
如果您不能得到一个登录:prompt,再检查一下 /etc/gettytab,重复检查:
在/etc/ttys 中指定的初始可用的名称与 /etc/gettytab 的一个可用的相匹配。
每个 nx= 记录与另一个 gettytab 可用名称匹配。
每个 tc= 记录与另一个 gettytab可用名称相匹配。
如果您拨号但 FreeBSD 系统上的 modem 没有回应, 确信 modem 能回应电话。 如果 modem 看起来配置正确了, 通过检查 modem 的指示灯来确认 DTR 线连接正确。
如果您做了好几次,它仍然无法工作,打断一会,等会再试试。 如果还不能工作,也许您应该发一封电子邮件给 FreeBSD 一般问题邮件列表 寻求帮助。
python程序开发案例?
python编程例子有哪些?
python编程经典例子:
1、画爱心表白、图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以就可以建立模型,建立表达式expression,当满足时,两个for循环(forXinrange;forYinrange)就会每行每列的打印。
2、快递查询工具、此Python小项目需要用到json与requests两个库,还需调用API。
3、用python编程完成图像识别、鼠标模拟,需要调用OpenCV框兄前架。
扩展资料:Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员差尘轿养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出,而非使用花括号或者某种关键字。增加缩进表示语句块的开始,虚肆而减少缩进则表示语句块的退出,缩进成为了语法的一部分。
python软件开发的案例有哪些,可用于哪些开发
列举一些比较有名的网站或应用。这其中有一些是用python进行开发,有一些在部分业务或功能上使用到了python,还有的是支持python作为扩展脚本语言。数据大部分来自Wikepedia和Quora。
Reddit-社交分享网站世没,最早用Lisp开发,在年转为python
Dropbox-文件分享服务
豆瓣网-图书、唱片、**等文化产品搜简纳的资料数据库网站
Django-鼓励快速开发的Web应用框架
Fabric-用于管理成百上咐运千台Linux主机的程序库
EVE-网络游戏EVE大量使用Python进行开发
Blender-以C与Python开发的开源3D绘图软件
BitTorrent-bt下载软件客户端
UbuntuSoftwareCenter-Ubuntu9.版本后自带的图形化包管理器
YUM-用于RPM兼容的Linux系统上的包管理器
CivilizationIV-游戏《文明4》
Battlefield2-游戏《战地2》
Google-谷歌在很多项目中用python作为网络应用的后端,如GoogleGroups、Gmail、GoogleMaps等,GoogleAppEngine支持python作为开发语言
NASA-美国宇航局,从年起把python作为主要开发语言
IndustrialLightMagic-工业光魔,乔治·卢卡斯创立的**特效公司
Yahoo!Groups-雅虎推出的群组交流平台
YouTube-视频分享网站,在某些功能上使用到python
Cinema4D-一套整合3D模型、动画与绘图的高级三维绘图软件,以其高速的运算和强大的渲染插件著称
AutodeskMaya-3D建模软件,支持python作为脚本语言
gedit-Linux平台的文本编辑器
GIMP-Linux平台的图像处理软件
Minecraft:PiEdition-游戏《Minecraft》的树莓派版本
MySQLWorkbench-可视化数据库管理工具
Digg-社交新闻分享网站
Mozilla-为支持和领导开源的Mozilla项目而设立的一个非营利组织
Quora-社交问答网站
Path-私密社交应用
Pinterest-社交分享网站
SlideShare-幻灯片存储、展示、分享的网站
Yelp-美国商户点评网站
Slide-社交游戏/应用开发公司,被谷歌收购
Python程序开发之简单小程序实例(3)-打印乘法口诀表Python程序开发之简单小程序实例
(3)-打印乘法口诀表
一、项目功能
在屏幕中打印格式化的九九乘法口诀表。
二、项目分析
按九九乘法口诀的运算顺序,打印的口诀表共有9行9列,第1行只有1列,第2行有2列……,第9行共有9列,如下所示:
……
……
要按格式控制输出,需定义2个循环,其中一个循环(我们称其为外循环,在其内定义变量i)嵌套另一个循环(我们称其为内循环,在其内定义变量j),外循歼春裤环(变量i)控制行,循环次数大于等于1且小于,内循环(变量j)控制列,循环次数取决于外循环变量i的值。
三、程序源代码
#!/usr/bin/python3.6
#-*-coding:GBK-*-
print("九九乘法口诀表")
foriinrange(1,):
print()
forjinrange(1,i+1):
print("%d*%d=%d"%(j,i,i*j),end="")
四、代码解释:
在程序的第一行为引用python版本,本实例为python3.6
第二行是程序编码引用,因为在程序中包含有中文字符,所以必须引用GBK,否则就会报错。
第三行为输出标题“九九乘法口诀表”
第四行至第七行为程序主体,由两个循环嵌套组成,在循环内氏简的第五行,为一个控制行格式输出语句print(),用于换行操作。
五森滑、运行后的输出结果
下一篇:《Python程序开发之简单小程序实例(4)》
Python程序开发之简单小程序实例()小游戏-跳动的小球Python程序开发之简单小程序实例
()小游戏-跳动的小球
一、项目功能
用户控制挡板来阻挡跳动的小球。
二、项目分析
根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。
三、程序源代码
源码部分截图:
源码:
#!/usr/bin/python3.6
#-*-coding:GBK-*-
#导入相应模块
fromtkinterimport
*importrandom
importtime
#自定义小球的类Ball
classBall:
#初始化
def__init__(self,canvas,paddle,color):
#传递画布值
self.canvas=canvas
#传递挡板值
self.paddle=paddle
#画圆并且保存其ID
self.id=canvas.create_oval(,,,,fill=color)
self.canvas.move(self.id,,)
#小球的水平位置档厅起始列表
start=[-3,-2,-1,1,2,3]
#随机化位置列表
random.shuffle(start)
self.x=start[0]
self.y=-2
self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存
self.canvas_width=self.canvas.winfo_width()
#根据参数值绘制小球
defdraw(self):
self.canvas.move(self.id,self.x,self.y)
pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐败拿标(左察蠢搭上角和右上角坐标)
#使得小球不会超出窗口
pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标
ifpos[1]=self.canvas_heighor(pos[3]=pad[1]andpos[2]=pad[0]andpos[2]
推荐几个适合新手练手的Python项目《Python实战:四周实现爬虫系统》百度网盘免费下载
链接:
提取码:xbdu?明态
Python实战旅槐埋:四周实现爬拆蚂虫系统
2024-12-24 00:36
2024-12-23 23:50
2024-12-23 23:42
2024-12-23 23:05
2024-12-23 23:00