奉城网站建设,免费建设企业网站,做问卷调查的网站,拖拽式网站建设费用大家好#xff0c;欢迎继续观看系列专栏 《零基础#xff1a;100个小案例玩转Python软件开发#xff01;》 #xff01;在这个系列里#xff0c;我们不讲枯燥的理论#xff0c;只玩最酷的Python案例实战。 本节课我们来学习一下如何制作电子钟#xff0c;为什么要讲解电…大家好欢迎继续观看系列专栏《零基础100个小案例玩转Python软件开发》在这个系列里我们不讲枯燥的理论只玩最酷的Python案例实战。本节课我们来学习一下如何制作电子钟为什么要讲解电子钟的制作呢因为这个案例涉及到两个知识点画布绘图的方法和函数。定时器组件的使用。具体如何做呢下面我们来学习一下吧~一、表盘的制作首先我们创建一个PyMe项目“Clock”调整Form的大小然后从顶部的绘制图形右边的绘制钟表背景圆。选中圆形然后在Form中拖动生成一个椭圆形横向宽一点并设置背景色为深灰色。再次拖动创建一个圆形设置背景色也是深灰色但有一个白色边框放置在椭圆之上这样可以增强表盘的立体感。在这个过程中我们可以把底下的椭圆形通过鼠标右键的菜单项“锁定图形”以防止图形被误操作移动。操作完后可以把上面的圆形表盘也锁定。有了表盘后下面我们要准备一个与之大小合适的表盘上圆形指示秒的图片这个图片是PNG的除了黑色部分其它都是透明的。然后我们从顶部绘图工具条选中图片在Form_1上拖动出一个图片然后选中它用鼠标右键单击在弹出菜单中选择“更换图片文件”打开上面的图片。将指示图调整到合适大小后锁定图片再继续从顶部选择文字并在相应的小时处拖动生成时间。在这个基础上再从顶部选择矩形和文字在下部加入一个黑色的矩形和文字用于显示日期另外还需要用鼠标右键菜单为Form_1增加一个绑定点,放置在表盘中央用于定位时针分针和秒针的绘图起点。最后按着CTRL键可以取消Tag显示效果如下这样表盘的图形制作部分就基本完成了。二、定时器与绘图逻辑有了基本的图形后下面我们从左边的“组件”工具条选择定时器组件Timer并拖动到Form_1上。什么是定时器呢定时器就是能够设定按固定时间间隔调用回调函数的一个功能对象它特别适合处理定时触发的逻辑。在创建出定时器组件后我们可以选中它在右边的属性栏可以设置时间间隔为1000毫秒这样定时器一旦启动就会每1000毫秒也就是每一秒来调用一次回调函数了。用鼠标在定时器组件上右键单击在弹出菜单中选择“事件响应”然后在弹出的“事件响应处理编辑区“对话框中选择”Timer“事件在右边点击”编辑事件函数”即可进入相应的函数代码中进行编辑。在代码编辑器中我们要做的就是通过每秒触发时获得当前时间然后在相应的位置来绘制时针分针和秒针。不过首先是要在界面初始化函数Form_1_onLoad中启动定时器def Form_1_onLoad(uiName): timer Fun.GetElement(界面名称uiName,控件名称Timer_1) Fun.SetShapeText(界面名称uiName,控件名称Form_1,图形标记date,字符串文本) timer.Start()这里如果不想写代码也可以通过鼠标右键菜单选择界面函数下的Timer的“开始”即可调用定时器的Start函数启动它了最后就是在定时器的触发函数中编写具体逻辑了def Timer_1_onTimer(uiName,widgetName): root Fun.GetElement(界面名称uiName,控件名称root) drawCanvas Fun.GetElement(界面名称uiName,控件名称Form_1) tm time.localtime() hour tm.tm_hour if hour 12: hour - 12 minute tm.tm_min secoud tm.tm_sec year_text str(tm.tm_year) if tm.tm_mon 10: month_text str(0%d%tm.tm_mon) else: month_text str(%d%tm.tm_mon) day_text str(tm.tm_mday) if tm.tm_mday 10: day_text str(0%d%tm.tm_mday) else: day_text str(%d%tm.tm_mday) hour_text str(tm.tm_hour) if tm.tm_hour 10: hour_text str(0%d%tm.tm_hour) else: hour_text str(%d%tm.tm_hour) minute_text str(tm.tm_min) if tm.tm_min 10: minute_text str(0%d%tm.tm_min) else: minute_text str(%d%tm.tm_min) secoud_text str(tm.tm_sec) if tm.tm_sec 10: secoud_text str(0%d%tm.tm_sec) else: secoud_text str(%d%tm.tm_sec) textstr(%s月%s日%(month_text,day_text)) Fun.SetShapeText(界面名称uiName,控件名称Form_1,图形标记date,字符串文本text) position Fun.GetShapePoint(界面名称uiName,控件名称Form_1,图形标记circle,绑定点名称center) centerX position[0] centerY position[1] radius 220 #时针分针秒针 drawCanvas.delete(hour) drawCanvas.delete(min) drawCanvas.delete(sec) rad12*math.pi*(hourminute/60)/12 rad22*math.pi*(tm.tm_mintm.tm_sec/60)/60 rad32*math.pi*tm.tm_sec/60 x int(radius * 0.4 * math.sin(rad1)) y int(-radius * 0.4 * math.cos(rad1)) Fun.DrawLine(界面名称uiName,控件名称Form_1,起点X值centerX,起点Y值centerY,终点X值centerXx,终点Y值centerYy,图形中心点位置nw,终条颜色#000000,终条宽度10,虚线长度及间隔(0,0),图形标记hour) x int(radius * 0.5 * math.sin(rad2)) y int(-radius * 0.5 * math.cos(rad2)) Fun.DrawLine(界面名称uiName,控件名称Form_1,起点X值centerX,起点Y值centerY,终点X值centerXx,终点Y值centerYy,图形中心点位置nw,终条颜色#000000,终条宽度6,虚线长度及间隔(0,0),图形标记min) x int(radius * 0.6 * math.sin(rad3)) y int(-radius * 0.6 * math.cos(rad3)) Fun.DrawLine(界面名称uiName,控件名称Form_1,起点X值int(centerX-0.1*x),起点Y值int(centerY-0.1*y),终点X值int(centerXx),终点Y值int(centerYy),图形中心点位置nw,终条颜色#ff0000,终条宽度2,虚线长度及间隔(0,0),图形标记min) #中心点 Fun.DrawCircle(界面名称uiName,控件名称Form_1,起点X值centerX-10,起点Y值centerY-10,终点X值centerX10,终点Y值centerY10,图形中心点位置nw,图形填充颜色#CFCF00,外边框颜色#CFCF00,外边框宽度0,外边框虚线长度及间隔(0,0),图形标记)在这段代码中我们重点是调用绘图函数通过Fun.GetShapePoint获取绑定点位置然后进行线条绘制和圆形中心的绘制最终运行效果如下在Fun函数库中的绘图函数和玩法还有许多你可以通过在代码中输入“Fun.”来唤起Fun函数智能提示并以Draw作为前缀来查看函数列表你学会了么下一节我们将基于绘图做一些更炫酷的动态界面保持对PyMe的关注哦