Python程序开发之简单小程序实例
(11)小 游戏 -跳动的小球
一、项目功能
二、项目分析
根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。
三、程序源代码
源码部分截图:
源码:
#!/usr/bin/python3.6
# -*- coding: GBK -*-
#导入相应模块
from tkinter import *
import random
import time
#自定义小球的类 Ball
class Ball:
# 初始化
def __init__(self,canvas,paddle,color):
#传递画布值
self.canvas=canvas
#传递挡板值
self.paddle=paddle
#画圆并且保存其ID
self.id=canvas.create_oval(10,10,25,25,fill=color)
self.canvas.move(self.id,245,100)
#小球的水平位置起始列表
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()
#根据参数值绘制小球
def draw(self):
self.canvas.move(self.id,self.x,self.y)
pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)
#使得小球不会超出窗口
pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标
if pos[1]=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]
这个两个功能和学习成本差别不是特别大。功能,wxPython要稍微丰富一些,自然要稍微复杂一点。不过Tkinter是python 原生的库,麻雀虽小五脏俱全,做一些小工具,或者比较小型的程序,还是比较方便。
wxPython则比较鸡肋,用起来没有Tkinter方便,功能又没有QT之类的强大。
建议小程序用tkinter,大型一些的就用QT
依赖库为python自带的tkinter话说我在用tkinter的时候注意到了这么一个方法
root.attributes("-topmost", 1)
该方法可以让窗口保持置顶状态,于是我就联想到其他功能,制作一个白屏小程序
from tkinter import Tk
# 按ALT+F4的时候会回调此函数
def on_closing():
pass
root = Tk()
# 隐藏外部窗口
root.overrideredirect(True)
# 设置透明度为(0,1),0为全透明(不过无效,建议0.01)
# root.attributes("-alpha", 0.5)
# 设置为全屏
root.state('zoomed')
# 置顶
root.attributes("-topmost", 1)
# 设置窗口出现'WM_DELETE_WINDOW'命令时,回调on_closing函数
# 该方法会使关闭失效
root.protocol('WM_DELETE_WINDOW', on_closing)
# 设置窗口出现30秒后关闭,测试的时候加上
root.after(30000, root.quit)
root.mainloop()
这里带注释的部分都可以删掉,此外root.after()功能是实现定时关闭,以防写代码的时候运行没法关掉,如果要整蛊别人的话可以删掉这行或设置为999000,即等待999秒
原理很简单,就是设置一个窗口,分别加上如下属性
# 外部窗口及窗口工具隐藏(最大化、关闭)
# 窗口全屏
# 窗口置顶
# 窗口关闭功能失效
运行完后屏幕直接白屏(图片就不放了),常规方法例如关闭、ALT+F4、任务管理器都是没办法关掉的。想要解决可以直接重启或者采取一些特殊方法
完成之后,在终端(或cmd)里运行:pyinstaller -F -w 带路径的py文件名.py
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)