当前位置: 首页 > news >正文

网站页头页尾怎么做浏览器缓冲设置室内设计师培训班哪家好

网站页头页尾怎么做浏览器缓冲设置,室内设计师培训班哪家好,网站反向绑定域名,wordpress中文版只是一个php上一篇文章#xff1a;CGY-OS 正式开源#xff01;_cgy091107的博客-CSDN博客 一、软件编写基础要求 在编写CGY-OS的应用程序之前#xff0c;您需要#xff1a; 1. 安装python3.10#xff0c;配置好CGY-OS。 2.掌握python3的基本语法、lambda表达式、各种简单的数据结构。…上一篇文章CGY-OS 正式开源_cgy091107的博客-CSDN博客 一、软件编写基础要求 在编写CGY-OS的应用程序之前您需要 1. 安装python3.10配置好CGY-OS。 2.掌握python3的基本语法、lambda表达式、各种简单的数据结构。 3.对python的tkinter库有基本的了解并使用它编写过简单的应用程序。 4.仔细阅读过上一篇文章。这很重要否则后文的传参将让您头疼 如果您认为您满足此要求请继续向下翻看。 二、配置CGY-OS 以后再说。u 三、编写第一个“ULoop”程序numAdder 3.1 “ULoop”和“Loop” 由于CGY-OS 的GUI控件中大多如Button、Entry都有command参数所以在处理一些简单的任务如按下按钮执行一个函数时无需一个一直在后台执行的进程处理这些任务所以我们不需要在应用程序里编写一个类似于cos的oneloop的函数关于cos.oneloop参见上一篇文章这种程序被称为“ULoop”。 反之在处理一些复杂的、不能中断的任务如计时器、游戏时我们在程序里必须设置一个在后台一直执行的函数def run():这种程序被称为“Loop”。 3.2 编写程序 其实在上一篇文章的2.1中已经带领大家编写过了一个“ULoop程序。所以框架在此不再解释。 在cos\apps新建文件命名为“numAdder.py”,输入基础框架并在cos\apps\__init__.py第一行末尾追加“numAdder”详见见上一篇文章的2.1。 from apilib import * from classes import * import cos# 导入包def cosmain(): # 主函数screen cos.window # 绑定显示器root Tk(screen, 10, 105, 350, 450, Basic) # 创建窗口api_hook(root, Basic) # 绑定窗口在cos应用程序编写中最稳妥的方式是先添加控件再调整root的大小root的大小基本总是不合适的。我们现在来添加一个文本框 def cosmain(): screen cos.window root Tk(screen, 10, 105, 350, 450, Basic) entry Entry(screen, root, 5, 5, 70) #这里entry.pack() #这里api_hook(root, Basic)运行一下如果您无法运行请检查cos\apps\__init__.py的第一行的import语句是否包含numAdder、您的文件名称和App_starter中的输入如果您问我如何在App_starter的文本框内输入那么请仔细查看上一篇文章如果还是输入不了请换Windowspython3.10高配置并重试几遍结果如图 很好接下来 我们在添加一个“”使用Label和另一个文本框。 def cosmain():screen cos.windowroot Tk(screen, 10, 105, 350, 450, Basic) entry Entry(screen, root, 5, 5, 70)entry.pack()Label(screen, root, , 83, 5, bgNone).pack() #从这里entry2 Entry(screen, root, 100, 5, 70)entry2.pack() #到这里api_hook(root, Basic)对于像“”这样既不获取其值又不对其加以改变的控件我们可以不使用变量直接调用其pack方法学过tkinter的都懂。运行结果如图 在创建一个calc函数函数体为空和一个按钮、一个状态栏就是label并将calc绑定到按钮和文本框中。 def cosmain():def calc(): #这里passscreen cos.windowroot Tk(screen, 10, 105, 350, 450, Basic)entry Entry(screen, root, 5, 5, 70, commandcalc)#这里entry.pack()Label(screen, root, , 83, 5, bgNone).pack()entry2 Entry(screen, root, 100, 5, 70, commandcalc)#这里entry2.pack()Button(screen, root, Calc, 175, 5, 45, commandcalc).pack()#从这里label Label(screen, root, Welcome!, 5, 35, bgNone)label.pack() #到这里api_hook(root, Basic)接下来可以更改窗口了。 from apilib import * from classes import * import cosdef cosmain():def calc():passscreen cos.windowroot Tk(screen, 10, 105, 230, 55, numAdder) #这里entry Entry(screen, root, 5, 5, 70, commandcalc)entry.pack()Label(screen, root, , 83, 5, bgNone).pack()entry2 Entry(screen, root, 100, 5, 70, commandcalc)entry2.pack()Button(screen, root, Calc, 175, 5, 45, commandcalc).pack()label Label(screen, root, Welcome!, 5, 35, bgNone)label.pack()api_hook(root, numAdder) #这里至此UI界面编写完成。运行结果 接下来编写运算函数先获取两数的值并相加、显示 def calc():num1 int(entry.get())num2 int(entry2.get())ans num1 num2label.config(textf{num1}{num2}{ans}, fgblue) #使用蓝色显示答案再运行一下 很好没有问题但是当我们输入非数字时……  cos崩溃了。 我们必须避免这种问题解决方案当然是try...except...语句。 def calc():try:num1 int(entry.get())num2 int(entry2.get())except ValueError:label.config(textMust be a number., fgred)else:ans num1 num2label.config(textf{num1}{num2}{ans}, fgblue) # 使用蓝色显示答案再试一次就没有问题了 3.3 Label.maxlenth 体验 程序优化 当我们输入的数过长时label的显示会出现问题 接下来让我们解决这种问题。 方法1长度限制因为Entry没有maxlenth之类的参数当然以后会有所以我们只能在程序中限制 def calc():try:num1 int(entry.get())num2 int(entry2.get())except ValueError:label.config(textMust be a number., fgred)else:if len(entry.get()) 10 or len(entry2.get()) 10:label.config(textNumbers length mustnt bigger than 10., fgred)else:ans num1 num2label.config(textf{num1}{num2}{ans}, fgblue) # 使用蓝色显示答案运行结果 好吧这样也超了所以我们才需要第二种方案: 方法2更改cosmain中的这一行代码然后查看结果 def cosmain():def calc():try:num1 int(entry.get())num2 int(entry2.get())except ValueError:label.config(textMust be a number., fgred)else:if len(entry.get()) 10 or len(entry2.get()) 10:label.config(textNumbers length mustnt bigger than 10., fgred)else:ans num1 num2label.config(textf{num1}{num2}{ans}, fgblue) # 使用蓝色显示答案screen cos.windowroot Tk(screen, 10, 105, 230, 80, numAdder)##这里80原来是55entry Entry(screen, root, 5, 5, 70, commandcalc)entry.pack()Label(screen, root, , 83, 5, bgNone).pack()entry2 Entry(screen, root, 100, 5, 70, commandcalc)entry2.pack()Button(screen, root, Calc, 175, 5, 45, commandcalc).pack() ######################################################这里label Label(screen, root, Welcome!, 5, 35, bgNone, maxlength20) #这里label.pack()api_hook(root, numAdder) 再次运行呢 我们看到它自动换行了。这是Label的高级功能。 3.4 恭喜 恭喜您已经成功的做出了一个安全的、完整的、实用的CGY-OS应用程序了 附上源代码 from apilib import * from classes import * import cosdef cosmain():def calc():try:num1 int(entry.get())num2 int(entry2.get())except ValueError:label.config(textMust be a number., fgred)else:if len(entry.get()) 10 or len(entry2.get()) 10:label.config(textNumbers length mustnt bigger than 10., fgred)else:ans num1 num2label.config(textf{num1}{num2}{ans}, fgblue)screen cos.windowroot Tk(screen, 10, 105, 230, 80, numAdder)entry Entry(screen, root, 5, 5, 70, commandcalc)entry.pack()Label(screen, root, , 83, 5, bgNone).pack()entry2 Entry(screen, root, 100, 5, 70, commandcalc)entry2.pack()Button(screen, root, Calc, 175, 5, 45, commandcalc).pack()label Label(screen, root, Welcome!, 5, 35, bgNone, maxlength20)label.pack()api_hook(root, numAdder)四、编写第一个Loop应用程序 4.1 概述 在本程序中我们要通过canvas控件创建一个动画动画中我们每隔0.1秒刷新一次具体画什么后面自知。 4.2 编写程序框架 新建文件animation.py(animation为“动画”的英文)输入应用程序框架并在cos\apps\__init__.py第一行结尾追加运行无误后进行下一步。 为了在后台运行我们的进程我们在cosmain中添加一个run函数并用root.add_unapply_hook来添加它之所以用add_unapply_hook是为了在root隐藏时可以继续运行run函数虽然本示例用不到它但是这是一个好的习惯。 def cosmain():def run():passscreen cos.windowroot Tk(screen, 10, 105, 350, 450, Basic)root.add_unapply_hook(run)api_hook(root, Basic) 重点run函数要写成oneloop的形式也就是说它的函数体不是循环而是循环内的所有代码。 4.3 计时器 计时器类来自cpu.py的Time类它被apilib间接导入到应用程序中。 我们使用一个程序直接该animation.py源代码来说明这个类这个程序显示一个Label它从0开始每一秒增加1. from apilib import * from classes import * import cosdef cosmain():def run():nonlocal i # nonlocal:问你的python老师去if (not timer.is_sleeping() # 如果上一次计时结束or timer.sec 0): # 或者刚刚开始timer.sleep(1) # 计时1秒i 1label.config(textf{i}) # 更新screen cos.windowroot Tk(screen, 10, 105, 55, 30, Time)timer Time()i 0label Label(screen, root, f{i}, 5, 5, bgNone)label.pack()root.add_unapply_hook(run)api_hook(root, Time)运行结果 4.4 编写程序 我们先把4.3的文件删掉换成4.2的框架。 我们的GUI编写非常简单只需要添加一个canvas并改变窗口就可以了。 from apilib import * from classes import * import cosdef cosmain():def run():passscreen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()root.add_unapply_hook(run)api_hook(root, Animation)我们再来添加一个画方块的函数box并添加一个测试用的按钮来调用它 from apilib import * from classes import * import cos import randomdef cosmain():def box(i):pen canvas.rect(100 - i * 5, 100 - i * 5, i * 10, i * 10,(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))pens.append(pen)def run():passpens []screen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()Button(screen, root, test, 5, 5, 45, lambda: box(15)).pack()root.add_unapply_hook(run)api_hook(root, Animation)点击按钮屏幕上出现了一个颜色随机的正方形。 接下来我们删除button参考4.3中的内容使run函数每隔0.5秒执行一次i先传参15 def cosmain():def box(i):pen canvas.rect(100 - i * 5, 100 - i * 5, i * 10, i * 10,(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))pens.append(pen)def run():if not timer.is_sleeping() or timer.sec0:timer.sleep(0.5)box(15)pens []screen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)timer Time()canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()# Button(screen, root, test, 5, 5, 45, lambda: box(15)).pack()root.add_unapply_hook(run)api_hook(root, Animation)我们在增加一个i变量从20开始每0.5秒减少1直到为0为止。 from apilib import * from classes import * import cos import randomdef cosmain():def box(i):pen canvas.rect(100 - i * 5, 100 - i * 5, i * 10, i * 10,(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))pens.append(pen)def run():nonlocal iif not timer.is_sleeping() or timer.sec 0:timer.sleep(0.5)if i ! 0: box(i)i - 1pens []i 20screen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)timer Time()canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()# Button(screen, root, test, 5, 5, 45, lambda: box(15)).pack()root.add_unapply_hook(run)api_hook(root, Animation)运行结果 接下来我们增加一个功能在i0(结束绘图)是将所有正方形从外到内删除直到画布为空白。 def cosmain():def box(i):pen canvas.rect(100 - i * 5, 100 - i * 5, i * 10, i * 10,(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))pens.append(pen)def run():nonlocal i, flagif not timer.is_sleeping() or timer.sec 0:timer.sleep(0.5)if not flag: # 没有停止过if i ! 0:box(i)i - 1else:flag Trueelse:if len(pens) ! 0: # 如果还有绘图句柄canvas.remove_pen(pens[0])pens.pop(0) # 删除第一个元素pens []i 20flag False # 是否停止screen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)timer Time()canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()# Button(screen, root, test, 5, 5, 45, lambda: box(15)).pack()root.add_unapply_hook(run)api_hook(root, Animation) 我们来实现最后一个功能动画循环播放说白了只用增加3行代码 from apilib import * from classes import * import cos import randomdef cosmain():def box(i):pen canvas.rect(100 - i * 5, 100 - i * 5, i * 10, i * 10,(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))pens.append(pen)def run():nonlocal i, flagif not timer.is_sleeping() or timer.sec 0:timer.sleep(0.5)if not flag: # 没有停止过if i ! 0:box(i)i - 1else:flag Trueelse:if len(pens) ! 0: # 如果还有绘图句柄canvas.remove_pen(pens[0])pens.pop(0) # 删除第一个元素else: # 从这里flag Falsei 20 # 到这里pens []i 20flag False # 是否停止screen cos.windowroot Tk(screen, 10, 105, 200, 200, Animation)timer Time()canvas Canvas(screen, root, 0, 0, 200, 200)canvas.pack()# Button(screen, root, test, 5, 5, 45, lambda: box(15)).pack()root.add_unapply_hook(run)api_hook(root, Animation)最后将timer.sleep中的数据减小一点“timer.sleep(0.5)”—timer.sleep(0.05),观看效果——完美 4.5 恭喜 恭喜又完成了一件大作相信您在此时一定收获颇多。CGY-OS的程序就是这么简单只要可以熟练使用库就好了。 下一节我们将制作一个GUI设计很有挑战性的程序计算器。 五、计算器 5.1 原理、ui 让我们先打开python控制台输入以下代码 eval(5738-10*(5-4)) 输出85 所以eval表达式可以计算一个Python语句表达式的值。通过这个我们可以通过追加表达式的方法实现计算的功能此思路和大部分计算器的编写思路是一样的。 顺便说一句因为cos内核过于简单UI功能有限所以我们的ui长这样漂亮吧 5.2 Python实现 这次改规矩了先写函数再写UI。 import cos from apilib import * from classes import *def cosmain():def update(x): #将x追加到evaler后面nonlocal evalerif evaler ! 0:evaler xelse:evaler xdef backspace(): #退格nonlocal evalerif evaler ! 0 and evaler ! :evaler evaler[:-1]if evaler :evaler 0def c():#清零nonlocal evalerevaler 0def calc(): #计算nonlocal evalertry:int(eval(evaler)) #使用eval计算和试错except(SyntaxError, Exception):pass #先不管他finally:evaler 0 #怎么着都得重置screen cos.windowevaler 0 #数学表达式root Tk(screen, 10, 105, 270, 65, calc)api_hook(root, calc)注释很清楚写过计算器的应该都能看懂。 再加一个Label def cosmain():def update(x):nonlocal evalerif evaler ! 0:evaler xelse:evaler xif len(evaler) len(Error:Invalid expression.):label.config(textevaler, fgblack)#成功增加else:label.config(textError:Line too long., fgred)#失败太长了def backspace():nonlocal evalerif evaler ! 0 and evaler ! :evaler evaler[:-1]if evaler :evaler 0label.config(textevaler, fgblack)#成功def c():nonlocal evalerevaler 0label.config(textevaler, fgblack)#成功def calc():nonlocal evalertry:label.config(textf{int(eval(evaler))}, fggreen) #成功except(SyntaxError, Exception):label.config(Error:Invalid expression., fgred) #语法错误finally:evaler 0screen cos.windowevaler 0root Tk(screen, 10, 105, 270, 65, calc)Canvas(screen, root, 5, 5, 260, 15).pack()#为了使背景为白色增加一个白色的canvas正方形label Label(screen, root, evaler, 5, 5)label.pack()api_hook(root, calc) 最后一堆按钮 Button(screen, root, C, 5, 25, 10, lambda: c()).pack()Button(screen, root, 1, 20, 25, 10, lambda: update(1)).pack()Button(screen, root, 2, 35, 25, 10, lambda: update(2)).pack()Button(screen, root, 3, 50, 25, 10, lambda: update(3)).pack()Button(screen, root, 4, 65, 25, 10, lambda: update(4)).pack()Button(screen, root, 5, 80, 25, 10, lambda: update(5)).pack()Button(screen, root, 6, 95, 25, 10, lambda: update(6)).pack()Button(screen, root, 7, 110, 25, 10, lambda: update(7)).pack()Button(screen, root, 8, 125, 25, 10, lambda: update(8)).pack()Button(screen, root, 9, 140, 25, 10, lambda: update(9)).pack()Button(screen, root, 0, 155, 25, 10, lambda: update(0)).pack()Button(screen, root, BackSpace, 170, 25, 95, lambda: backspace()).pack()Button(screen, root, , 5, 45, 10, lambda: update()).pack()Button(screen, root, -, 20, 45, 10, lambda: update(-)).pack()Button(screen, root, *, 35, 45, 10, lambda: update(*)).pack()Button(screen, root, /, 50, 45, 10, lambda: update(/)).pack()Button(screen, root, %, 65, 45, 10, lambda: update(%)).pack()Button(screen, root, //, 80, 45, 20, lambda: update(//)).pack()Button(screen, root, (, 105, 45, 10, lambda: update(()).pack()Button(screen, root, ), 120, 45, 10, lambda: update())).pack()Button(screen, root, Calc it!, 135, 45, 85, lambda: calc()).pack() 5.3 恭喜 计算器这个程序虽然简单但意义非凡它代表着CGY-OS在不断地向实用的操作系统买进 本节写的简单了一些以后也只会越来越简单。 全部源码 import cos from apilib import * from classes import *def cosmain():def update(x):nonlocal evalerif evaler ! 0:evaler xelse:evaler xif len(evaler) len(Error:Invalid expression.):label.config(textevaler, fgblack)else:label.config(textError:Line too long., fgred)def backspace():nonlocal evalerif evaler ! 0 and evaler ! :evaler evaler[:-1]if evaler :evaler 0label.config(textevaler, fgblack)def c():nonlocal evalerevaler 0label.config(textevaler, fgblack)def calc():nonlocal evalertry:label.config(textf{int(eval(evaler))}, fggreen)except(SyntaxError, Exception):label.config(Error:Invalid expression., fgred)finally:evaler 0screen cos.windowevaler 0root Tk(screen, 10, 105, 270, 65, calc)Canvas(screen, root, 5, 5, 260, 15).pack()label Label(screen, root, evaler, 5, 5)label.pack()Button(screen, root, C, 5, 25, 10, lambda: c()).pack()Button(screen, root, 1, 20, 25, 10, lambda: update(1)).pack()Button(screen, root, 2, 35, 25, 10, lambda: update(2)).pack()Button(screen, root, 3, 50, 25, 10, lambda: update(3)).pack()Button(screen, root, 4, 65, 25, 10, lambda: update(4)).pack()Button(screen, root, 5, 80, 25, 10, lambda: update(5)).pack()Button(screen, root, 6, 95, 25, 10, lambda: update(6)).pack()Button(screen, root, 7, 110, 25, 10, lambda: update(7)).pack()Button(screen, root, 8, 125, 25, 10, lambda: update(8)).pack()Button(screen, root, 9, 140, 25, 10, lambda: update(9)).pack()Button(screen, root, 0, 155, 25, 10, lambda: update(0)).pack()Button(screen, root, BackSpace, 170, 25, 95, lambda: backspace()).pack()Button(screen, root, , 5, 45, 10, lambda: update()).pack()Button(screen, root, -, 20, 45, 10, lambda: update(-)).pack()Button(screen, root, *, 35, 45, 10, lambda: update(*)).pack()Button(screen, root, /, 50, 45, 10, lambda: update(/)).pack()Button(screen, root, %, 65, 45, 10, lambda: update(%)).pack()Button(screen, root, //, 80, 45, 20, lambda: update(//)).pack()Button(screen, root, (, 105, 45, 10, lambda: update(()).pack()Button(screen, root, ), 120, 45, 10, lambda: update())).pack()Button(screen, root, Calc it!, 135, 45, 85, lambda: calc()).pack()api_hook(root, calc)六、“超级画板” 6.1 一个新的类 为了使这个应用程序可以使用我专门写了一个新的类ImageButton,它为Button的子类。 class ImageButton(Button):def __init__(self, screen, root, img, x, y, w, h, table, command, bglightgray):super().__init__(screen, root, , x, y, w, command, bg)self.image imgself.table tableself.h hdef printImg(self):for i in range(len(self.image)):for j in range(len(self.image[i])):if self.table[self.image[i][j]] is not None:Io.io_put_point(self.screen, self.x self.root.x j, self.y self.root.y i,self.table[self.image[i][j]])def config(self, xNone, yNone, wNone, hNone, commandNone, fgNone, bgNone, imageNone, tableNone):if x is not None:self.x xif y is not None:self.y yif w is not None:self.w wif h is not None:self.h hif command is not None:self.command commandif fg is not None:self.fg fgif bg is not None:self.bg bgif image is not None:self.image imageif table is not None:self.table tabledef draw(self):global s_modemx, my pygame.mouse.get_pos()if self.check_click(mx, my):Io.io_put_box(self.screen, self.x - 1 self.root.x, self.y - 1 self.root.y, self.w 1, self.h 1,black)Io.io_put_box(self.screen, self.x self.root.x, self.y self.root.y, self.w 1, self.h 1, white)Io.io_put_box(self.screen, self.x self.root.x, self.y self.root.y, self.w, self.h, self.bg)self.printImg()else:Io.io_put_box(self.screen, self.x - 1 self.root.x, self.y - 1 self.root.y, self.w 1, self.h 1,white)Io.io_put_box(self.screen, self.x self.root.x, self.y self.root.y, self.w 1, self.h 1, black)Io.io_put_box(self.screen, self.x self.root.x, self.y self.root.y, self.w, self.h, self.bg)self.printImg()if self.on(mx, my):cell.m_state mouse3s_mode Trueif self.runcmd() and self.check_click(mx, my):self.command()这里说一下img是一个二维数组table是一个字典用于描述img的颜色。 有了类就要有图片前面说了img是二维数组所以图片都写在代码里 image0 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image1 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image2 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image3 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image4 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] 6.2 代码 没错直接上代码说都懒得说…… 先来UI: def cosmain():def changeColor(color, iten):passdef clear():passdef widthUpdate(num):passscreen cos.windowpen_color blackwidth 5root Tk(screen, 10, 105, 450, 450, Draw)canvas Canvas(screen, root, 30, 0, 420, 450)canvas.pack()btn_green ImageButton(screen, root, image0, 5, 5, 16, 16, {0: green, 1: black},lambda: changeColor(green, btn_green))btn_green.pack()btn_red ImageButton(screen, root, image0, 5, 25, 16, 16, {0: red, 1: black},lambda: changeColor(red, btn_red))btn_red.pack()btn_black ImageButton(screen, root, image0, 5, 45, 16, 16, {0: black, 1: white},lambda: changeColor(black, btn_black))btn_black.pack()btn_yellow ImageButton(screen, root, image0, 5, 65, 16, 16, {0: yellow, 1: black},lambda: changeColor(yellow, btn_yellow))btn_yellow.pack()btn_blue ImageButton(screen, root, image0, 5, 85, 16, 16, {0: blue, 1: black},lambda: changeColor(blue, btn_blue))btn_blue.pack()btn_lightblue ImageButton(screen, root, image0, 5, 105, 16, 16, {0: lightblue, 1: black},lambda: changeColor(lightblue, btn_lightblue))btn_lightblue.pack()btn_orange ImageButton(screen, root, image0, 5, 125, 16, 16, {0: orange, 1: black},lambda: changeColor(orange, btn_orange))btn_orange.pack()btn_purple ImageButton(screen, root, image0, 5, 145, 16, 16, {0: purple, 1: black},lambda: changeColor(purple, btn_purple))btn_purple.pack()btn_pink ImageButton(screen, root, image0, 5, 165, 16, 16, {0: pink, 1: black},lambda: changeColor(pink, btn_pink))btn_pink.pack()bth_clear ImageButton(screen, root, image2, 5, 185, 16, 16, {0: None, 1: black}, clear)bth_clear.pack()bth_up ImageButton(screen, root, image3, 5, 205, 16, 10, {0: None, 1: black}, commandlambda: widthUpdate(1))bth_up.pack()label Label(screen, root, str(width).zfill(2), 5, 220, bgNone) # zfill为补零的小技巧label.pack()bth_down ImageButton(screen, root, image4, 5, 240, 16, 10, {0: None, 1: black}, commandlambda: widthUpdate(-1))bth_down.pack()buttons [btn_pink, btn_purple, btn_orange, btn_lightblue, btn_blue, btn_yellow, btn_black, btn_red, btn_green]def run():passroot.add_unapply_hook(run)api_hook(root, Drawer) 再上逻辑 def changeColor(color, iten):nonlocal pen_colorpen_color coloriten.config(imageimage1)for i in buttons:if i is iten: continuei.config(imageimage0)def clear():canvas.remove_all()def widthUpdate(num):nonlocal widthif 3 width num 50:width numlabel.config(textstr(width).zfill(2)) #……def run():is_on, mx, my canvas.mouse_is_on()if is_on and Io.io_check_mouse()[0]:canvas.rect(mx 15 8, my - 15 8, width, width, pen_color)最后把全部代码一上 from apilib import * from classes import * import cos import hankakuimage0 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image1 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image2 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],[0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image3 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] image4 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]def cosmain():def changeColor(color, iten):nonlocal pen_colorpen_color coloriten.config(imageimage1)for i in buttons:if i is iten: continuei.config(imageimage0)def clear():canvas.remove_all()def widthUpdate(num):nonlocal widthif 3 width num 50:width numlabel.config(textstr(width).zfill(2))screen cos.windowpen_color blackwidth 5root Tk(screen, 10, 105, 450, 450, Draw)canvas Canvas(screen, root, 30, 0, 420, 450)canvas.pack()btn_green ImageButton(screen, root, image0, 5, 5, 16, 16, {0: green, 1: black},lambda: changeColor(green, btn_green))btn_green.pack()btn_red ImageButton(screen, root, image0, 5, 25, 16, 16, {0: red, 1: black},lambda: changeColor(red, btn_red))btn_red.pack()btn_black ImageButton(screen, root, image0, 5, 45, 16, 16, {0: black, 1: white},lambda: changeColor(black, btn_black))btn_black.pack()btn_yellow ImageButton(screen, root, image0, 5, 65, 16, 16, {0: yellow, 1: black},lambda: changeColor(yellow, btn_yellow))btn_yellow.pack()btn_blue ImageButton(screen, root, image0, 5, 85, 16, 16, {0: blue, 1: black},lambda: changeColor(blue, btn_blue))btn_blue.pack()btn_lightblue ImageButton(screen, root, image0, 5, 105, 16, 16, {0: lightblue, 1: black},lambda: changeColor(lightblue, btn_lightblue))btn_lightblue.pack()btn_orange ImageButton(screen, root, image0, 5, 125, 16, 16, {0: orange, 1: black},lambda: changeColor(orange, btn_orange))btn_orange.pack()btn_purple ImageButton(screen, root, image0, 5, 145, 16, 16, {0: purple, 1: black},lambda: changeColor(purple, btn_purple))btn_purple.pack()btn_pink ImageButton(screen, root, image0, 5, 165, 16, 16, {0: pink, 1: black},lambda: changeColor(pink, btn_pink))btn_pink.pack()bth_clear ImageButton(screen, root, image2, 5, 185, 16, 16, {0: None, 1: black}, clear)bth_clear.pack()bth_up ImageButton(screen, root, image3, 5, 205, 16, 10, {0: None, 1: black}, commandlambda: widthUpdate(1))bth_up.pack()label Label(screen, root, str(width).zfill(2), 5, 220, bgNone) # zfill为补零的小技巧label.pack()bth_down ImageButton(screen, root, image4, 5, 240, 16, 10, {0: None, 1: black}, commandlambda: widthUpdate(-1))bth_down.pack()buttons [btn_pink, btn_purple, btn_orange, btn_lightblue, btn_blue, btn_yellow, btn_black, btn_red, btn_green]def run():is_on, mx, my canvas.mouse_is_on()if is_on and Io.io_check_mouse()[0]:canvas.rect(mx 15 8, my - 15 8, width, width, pen_color)root.add_unapply_hook(run)api_hook(root, Drawer)唉越来越懒了…… 6.3 BUG 本程序有一个bug。当我们运行它并连续点击使画笔粗细变成50时如果我们把鼠标放的太靠边的话  这并不是 draw应用程序的问题而是COS操作系统的问题请不要着急下一版本《有可能》十分“有”可能修复~ 七、下载地址 https://pan.baidu.com/s/1OqZ4R52dvnPCuUP1qaH3CA?pwdCGY6 https://download.csdn.net/download/cgy091107/88255436 https://download.csdn.net/download/cgy091107/88255436
http://www.yutouwan.com/news/118077/

相关文章:

  • 加强住房公积金网站建设外贸出口网站建设
  • 免费的个人网站怎么做h5页面开发用什么工具
  • 网站解析是什么意思电子产品网页设计
  • com网站域名注册云服务器费用
  • 微信如何建商城网站中国域名备案查询系统
  • 大连哪里有手机自适应网站建设长春网络建站
  • 付费网站 源码 下载链接网站推广方式的策划
  • 15年做那个网站能致富模拟网站建设软件有哪些
  • php做网站难么百度账号管理
  • 海外网站速度慢wordpress 搜索模板
  • 学校网站建设风险分析兰州出台9条优化措施
  • 成都网站开发建设公司wordpress自动抓取
  • 天津市工程建设项目报建网站网络营销有什么岗位
  • 龙岗做网站公司szaowflash做企业网站宣传片
  • 国内移动端网站做的最好的怎么建立一个表格
  • 网站开发与应用论文云空间
  • 网站app封装怎么做证券网站怎么做
  • html 学习网站用备忘录制作一个网站的制作
  • ppt网站建设答案做网站的系统
  • 济南网站建设山东酷风容城县建设银行网站
  • 河北省永清县建设局网站html5网站开发公司
  • 织梦网站模版下载西安关键词网站排名
  • 课程网站怎么做备案网站名
  • 图片站 wordpress九江有限公司
  • 网站建设的电话销售好做不如何开网店卖自己的东西
  • 网页制作新建站点步骤论坛网站开发开题报告
  • 电子商务网站设计岗位主要是wordpress 导航图片尺寸
  • 七星彩网投网站建设wordpress 华哥
  • 石家庄网站服务wordpress自製插件
  • 咸宁网站建设多少钱郑州红酒网站建设