唯一作业:
可回放的点彩画板
要求:
基础: 有画笔,可点绘
可用: 有画笔,有颜色,可点绘
合格: 有画笔,有颜色,可点绘,可回放
天才: 有画笔,有颜色,可点绘,可回放,回放速度可调节,回放可输出为文件
尽可能实现最多的功能。
先在脑海中想象了一下最后成品的界面是怎么样的。有三个按钮(对应三种图形),右边是最后绘图的界面。
frame.set_mouseclick_handler(click)
frame.set_draw_handler(draw)
添加按钮:
frame.add_button("Circle", circle)
看每个按钮都需要什么函数来实现功能——点击时改变相应的形状的存储值。
解决主体——点绘
def click()
——将点击到的坐标给这个图形
def draw_handler
——
canvas.draw_circle/polygon
和第二步的关系就是,绘图函数的第一个参数用变量代替,代入按钮选定的值。
需要颜色可以自己选定,我认为做成按钮很限制,所以选择做成输入框。
原来的draw部分最后一个参数的颜色是选定的,现在需要把这个地方改成一个变量,输入框部分构造一个函数把颜色赋值。
frame.add_input
color_input.set_text('red')
可以设置默认值的指令
只按上面的步骤做,如果修改一下颜色,或者更换一个形状,那么所有的图形都会更改自己的图形和颜色。
问题是:我的设置中没有给每个图形分类存储信息,每个图形的信息都是一样的,是同一赋值的。
每个图形分别存储自己的信息,包括图案,颜色,坐标。
if order <=1024:
lst.append([position, input_color, model])
在click函数,接受了坐标之后添加的处理。同时解决了计次(1024)的问题。
构想如何实现。回放自己的绘图过程,就是这个程序自动画图,他可以自己往最后draw函数使用的列表里面添加相应的图形。
实现:
先解决第二个步骤的,在click函数最后添加一步,使得review的list和这个 list相同。
然后解决第一步的。需要使用遍历和条件语句的结合,判断现在在review—list里面的序号是否在我们规定的范围内,以此为依据向列表投放图案。
这一段做了很多遍。变量多,不要彼此写反了;还有遍历和条件语句的顺序不要弄反
设置input框,和自动输入颜色的设置是一样的。
所以现在想到的,还是要把本地环境搭建好,然后进行输出。