皮皮网

【scala 源码分析】【明买源码】【搜源码神器】python tkinter源码

时间:2024-11-25 08:37:16 分类:时尚 来源:分时成交量抓涨停指标源码

1.烟花代码编程python(玫瑰花代码编程python)
2.UI交互版本李峋python爱心代码 (附源码)
3.Python+mysql+tkinter+matplotlib的可视化学生成绩管理系统课程设计(文末附源码)
4.PythonTkinter布局管理器之Grid布局管理器详解
5.PythonTkinter组件之Canvas
6.用python做个简单视频播放器,初识tkinter、cv2、PIL图像模块的使用

python tkinter源码

烟花代码编程python(玫瑰花代码编程python)

       æ”¾çƒŸèŠ±çš„代码

       #-*-coding:utf-8-*-importmath,random,timeimportthreadingimporttkinterastkimportreuuidFireworks=[]maxFireworks=8height,width=,classfirework(object):def__init__(self,color,speed,width,height):=uuid.uuid1()self.radius=random.randint(2,4)~4像素self.color=colorself.speed=speed.5-3.5秒self.status=0,status=0;爆炸后,status=1;当status时,烟花的生命期终止self.nParticle=random.randint(,)self.center=[random.randint(0,width-1),random.randint(0,height-1)]self.oneParticle=[](%状态时)self.rotTheta=random.uniform(0,2*math.pi):x=a*cos(theta),y=b*sin(theta)=[a,b]

python炫酷烟花表白源代码是多少?

       å­¦å®Œæœ¬æ•™ç¨‹åŽï¼Œä½ ä¹Ÿèƒ½åšå‡ºè¿™æ ·çš„烟花秀。

       å¦‚上图示,我们这里通过让画面上一个粒子分裂为X数量的粒子来模拟爆炸效果。粒子会发生"膨胀”,意思是它们会以恒速移动且相互之间的角度相等。这样就能让我们以一个向外膨胀的圆圈形式模拟出烟花绽放的画面。

       ç»è¿‡ä¸€å®šæ—¶é—´åŽï¼Œç²’子会进入"自由落体”阶段,也就是由于重力因素它们开始坠落到地面,仿若绽放后熄灭的烟花。

       åŸºæœ¬çŸ¥è¯†ï¼šç”¨Python和Tkinter设计烟花。

       è¿™é‡Œä¸å†ä¸€è‚¡è„‘把数学知识全丢出来,我们边写代码边说理论。首先,确保你安装和导入了Tkinter,它是Python的标准GUI库,广泛应用于各种各样的项目和程序开发,在Python中使用Tkinter可以快速的创建GUI应用程序。

       importtkinterastk

       fromPILimportImage,ImageTk

       fromtimeimporttime,sleep

       fromrandomimportchoice,uniform,randint

       frommathimportsin,cos,radians

       é™¤äº†Tkinter之外,为了能让界面有漂亮的背景,我们也导入PIL用于图像处理,以及导入其它一些包,比如time,random和math。它们能让我们更容易的控制烟花粒子的运动轨迹。

       Tkinter应用的基本设置如下:

       root=tk.Tk()

       ä¸ºäº†èƒ½åˆå§‹åŒ–Tkinter,我们必须创建一个Tk()根部件(rootwidget),它是一个窗口,带有标题栏和由窗口管理器提供的其它装饰物。该根部件必须在我们创建其它小部件之前就创建完毕,而且只能有一个根部件。

       w=tk.Label(root,text="HelloTkinter!")

       è¿™ä¸€è¡Œä»£ç åŒ…含了Label部件。该Label调用中的第一个参数就是父窗口的名字,即我们这里用的"根”。关键字参数"text”指明显示的文字内容。你也可以调用其它小部件:Button,Canvas等等。

       w.pack()

       root.mainloop()

       æŽ¥ä¸‹æ¥çš„这两行代码很重要。这里的打包方法是告诉Tkinter调整窗口大小以适应所用的小部件。窗口直到我们进入Tkinter事件循环,被root.mainloop()调用时才会出现。在我们关闭窗口前,脚本会一直在停留在事件循环。

       å°†çƒŸèŠ±ç»½æ”¾è½¬è¯‘成代码

       çŽ°åœ¨æˆ‘们设计一个对象,表示烟花事件中的每个粒子。每个粒子都会有一些重要的属性,支配了它的外观和移动状况:大小,颜色,位置,速度等等。

跨年烟花代码|用Python送你一场跨年烟花秀

       å·²ç»æŽ¥è¿‘尾声了,即将到来,本文我们用Python送你一场跨年烟花秀。

       æˆ‘们用到的Python模块包括:tkinter、PIL、time、random、math,如果第三方模块没有装的话,pipinstall一下即可,下面看一下代码实现。

       å¯¼åº“

       çƒŸèŠ±é¢œè‰²

       å®šä¹‰çƒŸèŠ±ç±»

       ç‡ƒæ”¾çƒŸèŠ±

       å¯åŠ¨

       çœ‹ä¸€ä¸‹æ•ˆæžœï¼š

       å¹´è·¨å¹´çƒŸèŠ±ä»£ç å¯å¤åˆ¶

       çƒŸèŠ±ä»£ç å¦‚下:

       packagelove;

       importjava.applet.Applet;

       importjava.awt.Color;

       importjava.awt.Graphics;

       importjava.net.URL;

       importjava.util.Random;

       çƒŸèŠ±

       @authorenjoy

       @SuppressWarnings("serial")

       publicclassQextendsAppletimplementsRunnable

       publicintspeed,variability,Max_Number,Max_Energy,Max_Patch,

       Max_Length,G;

       publicStringsound;

       privateintwidth,height;

       privateThreadthread=null;

       privateBeaClassDemobcd[];

       publicvoidinit()?

       inti;

       this.setSize(,);

       width=getSize().width-1;

       height=getSize().height-1;

       speed=1;?//烟花绽放的速度

       variability=;

       Max_Number=;?//可发出烟花的最大数目

       Max_Energy=width+;

       Max_Patch=;?//最大的斑点数

       Max_Length=;?//斑点的最大距离

       G=;?//向地面弯曲的力度

       bcd=newBeaClassDemo[Max_Number];

       for(i=0;iMax_Number;i++)

       bcd[i]=newBeaClassDemo(width,height,G);

       }

       publicvoidstart(){

       if(thread==null){

       thread=newThread(this);

       thread.start();

       }

       }

       @SuppressWarnings("deprecation")

       publicvoidstop(){

       if(thread!=null){

       thread.stop();

       thread=null;

       }

       }

       @SuppressWarnings({ "unused","static-access"})

       publicvoidrun(){

       inti;

       intE=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4+1;

       intP=(int)(Math.random()*Max_Patch*3/4)?//烟花的斑点数

       +Max_Patch/4+1;

       intL=(int)(Math.random()*Max_Length*3/4)?//烟花可发射出的距离

       +Max_Length/4+1;

       longS=(long)(Math.random()*);

       booleansleep;

       Graphicsg=getGraphics();

       URLu=null;

       while(true){

       try{

       thread.sleep(/speed);

       catch(InterruptedExceptionx){

       sleep=true;

       for(i=0;iMax_Number;i++)

       sleep=sleepbcd[i].sleep;

       if(sleepMath.random()*variability){

       E=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4

       +1;

       P=(int)(Math.random()*Max_Patch*3/4)+Max_Patch/4

       +1;

       L=(int)(Math.random()*Max_Length*3/4)+Max_Length/4

       +1;

       S=(long)(Math.random()*);

       for(i=0;iMax_Number;i++){

       if(bcd[i].sleepMath.random()*Max_Number*L1)

       bcd[i].init(E,P,L,S);

       bcd[i].start();

       bcd[i].show(g);

       publicvoidpaint(Graphicsg)?

       g.setColor(Color.black);

       g.fillRect(0,0,width+1,height+1);

       classBeaClassDemo

       publicbooleansleep=true;

       privateintenergy,patch,length,width,height,G,Xx,Xy,Ex[],Ey[],x,

       y,Red,Blue,Green,t;

       privateRandomrandom;

       publicBeaClassDemo(inta,intb,intg)

       width=a;

       height=b;

       G=g;

       publicvoidinit(inte,intp,intl,longseed)?

       inti;

       energy=e;

       patch=p;

       length=l;

       //创建一个带种子的随机数生成器

       random=newRandom(seed);

       Ex=newint[patch];

       Ey=newint[patch];

       Red=(int)(random.nextDouble()*)+;

       Blue=(int)(random.nextDouble()*)+;

       Green=(int)(random.nextDouble()*)+;

       Xx=(int)(Math.random()*width/2)+width/4;

       Xy=(int)(Math.random()*height/2)+height/4;

       for(i=0;ipatch;i++){

       Ex[i]=(int)(Math.random()*energy)-energy/2;

       Ey[i]=(int)(Math.random()*energy*7/8)-energy/8;

       publicvoidstart

       t=0;

       sleep=false;

       publicvoidshow(Graphicsg)?

       if(!sleep)

       if(tlength)

       inti,c;

       doubles;

       Colorcolor;

       c=(int)(random.nextDouble()*)-+Red;

       if(c=0c)

       Red=c;

       c=(int)(random.nextDouble()*)-+Blue;

       if(c=0c)

       Blue=c;

       c=(int)(random.nextDouble()*)-+Green;

       if(c=0c)

       Green=c;

       color=newColor(Red,Blue,Green);

       for(i=0;ipatch;i++)

       s=(double)t/;

       x=(int)(Ex[i]*s);

       y=(int)(Ey[i]*s-G*s*s);

       g.setColor(color);

       g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);

       if(t=length/2)

       intj;

       for(j=0;j2;j++)

       s=(double)((t-length/2)*2+j)/;

       x=(int)(Ex[i]*s);

       y=(int)(Ey[i]*s-G*s*s);

       g.setColor(Color.black);

       g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);

       å¸¸ç”¨çš„编程语言。

       ç¼–程语言一:C语言

       C语言是世界上最流行、使用最广泛的高级程序设计语言之一。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

       ç¼–程语言二:java

       Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。

       ç¼–程语言三:c++

       C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus","CPP”。它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。

UI交互版本李峋python爱心代码 (附源码)

       李峋同款Python爱心代码UI交互版本

       以下内容适合小白用户,无需复杂的Python环境配置,即可轻松操作。scala 源码分析

       亮点包括:

       1. UI交互功能,支持更换爱心的颜色

       2. 可添加或更换表白对象

       3. 打包成exe文件,无需安装Python环境,直接点击运行

       4. 名字标签随心跳频率变化,趣味互动

       以下为代码演示视频,感受李峋同款爱心代码的魅力。

       注意:视频可能有轻微卡顿,原因为录屏过程中所造成,不影响代码运行效果。

       代码实现包含:

       1. 使用tkinter库实现UI界面,用户可选择爱心颜色

       2. 交互式添加或更换表白对象

       3. 通过打包成exe文件,无需Python环境,直接运行

       4. 名字标签随心跳律动,增强用户互动体验

       为了方便获取代码,可关注公众号“指针阿飞”,明买源码回复“爱心”,即可免费领取源代码。

       为了便于学习和拓展,推荐参考以下相关文章:

       1. 李峋爱心代码

       2. tkinter学习笔记-颜色选择框的调用 - 知乎 (zhihu.com)

Python+mysql+tkinter+matplotlib的可视化学生成绩管理系统课程设计(文末附源码)

       开发工具使用了PyCharm专业版以及Python3.7,并结合MySQL8.0构建可视化学生成绩管理系统。

       需要获取源码、咨询或定制课程设计(包括但不限于C语言数据结构及Python)的读者,可以通过以下方式联系:

       访问指定链接并扫码添加QQ好友,或者直接添加QQ:。

       CSDN博客中,搜源码神器野指针的快乐博主提供了一系列Python、运维、KVM领域的课程设计资源,感兴趣的读者可以点击直达链接进行访问。

       系统的运行效果包括以下页面:

       主页面展示了整个系统的概览。

       教师端功能包含:

       登录后,教师可访问个人资料页面、学生查询页面、成绩查询页面以及成绩分析页面。

       成绩分析页面支持显示课程成绩统计图。最新伴游源码

       各班级创建分析页面以图表形式展示成绩。

       班级综合成绩评定页面通过扇形图进行展示。

       此外,教师还可以在课程管理页面根据学院和考试方式添加或删除课程。

       Teacherpage.py文件包含教师端功能的实现代码。

       学生端功能则涉及登录、修改密码等操作,具体实现代码位于student.py文件中。

       数据库采用MySQL8.0,系统内创建的婚礼flash源码表和数据库结构支持成绩与科目的增删查改操作。

       Dao层代码负责与数据库交互,执行SQL语句以实现数据管理功能。

PythonTkinter布局管理器之Grid布局管理器详解

       1.布局管理器概述

       æˆ‘们在前面在GUI编程框架认识掌握和学习到GUI编程分为两步

       ç¬¬ä¸€æ­¥ï¼šåˆ›å»ºç»„件放入到容器

       ç¬¬äºŒæ­¥ï¼šä½¿ç”¨å¸ƒå±€ç®¡ç†å™¨å¯¹å®¹å™¨ç»„件进行排版

       GUI编程就相当于小孩子搭积木,每个积木块应该放在哪里,每个积木块显示为多大,也就是对大小和位置都需要进行管理,而布局管理正是负责管理各组件的大小和位置的。此为,当用户调整了窗口的大小之后,布局管理器还会自动调整窗口中各组件的大小和位置。

       pythonTkinter提供了负责管理各个组件的大小和位置的布局管理器

       å¸ƒå±€ç®¡ç†å™¨èƒ½å¸®åŠ©æˆ‘们组织、管理在父组件中子组件的布局方式

       Tkinter提供了三种管理器:pack、grid、place

       æœ¬æœŸï¼Œæˆ‘们将学习PythonTkinter的布局管理Grid相关属性和方法,Let'sgo~

2.Grid布局管理器

       Grid表格布局器,采用表格结构组件。子组件的位置由行和列的单元格来确定,并且可以可以跨行和跨列,从而实现复杂的布局。

       Grid把组件空间分解成一个网格进行维护,即按照行、列的方式排列组件,组件位置由其所在的行号和列号决定:

       è¡Œå·ç›¸åŒè€Œåˆ—号不同的几个组件会被依次上下排列

       åˆ—号相同而行号不同的几个组件会被依次左右排列

       ä¾‹å¦‚使用Grid布局管理器对登陆界面进行排版示例图:

3.Grid常用属性属性作用column指定将组件放入哪列。第一列的索引为0columnspan指定组件横跨多少列row指定组件放入哪行。第一行的索引为0rowspan指定组件横跨多少行sticky这个参数用来确定:在插件正常尺寸下,如何分配单元中多余的空间ipadxx方向的内部填充,在插件内部,左右方向各填充指定长度的空间ipadyy方向的内部填充,在插件内部,上下方向各填充指定长度的空间padxx方向的外部填充,在插件外部,左右方向各填充指定长度的空间padyy方向的内部填充,在插件内部,上下方向各填充指定长度的空间in_用in_=w2可以将w登记为W2的child插件,W2必须是W创建时指定parent插件的Child插件 重要说明:

       sticky属性

       å¦‚果没有声明sticky属性,默认将插件居中于单元中

       é€šè¿‡è®¾ç½®sticky=tk.NE(靠右上方),sticky=tk.SE(靠右下方),sticky=tk.SW(靠左下方),sticky=tk.NW(靠左上方),可以将插件布置在单元的某个角落。

       é€šè¿‡è®¾ç½®sticky=tk.N(靠上方),sticky=tk.E(靠右方),sticky=tk.S(靠下方),sticky=tk.W(靠左方),可以将插件布置在单元的某个方向上

       é€šè¿‡è®¾ç½®sticky=tk.N+tk.S,在垂直方向上延伸插件,并保持水平居中

       é€šè¿‡è®¾ç½®sticky=tk.E+tk.W,在水平方向上延伸插件,并保持垂直居中

       é€šè¿‡è®¾ç½®sticky=tk.N+tk.E+tk.W,在水平和垂直方向上延伸插件,填满单元

       ä¸è¦åœ¨ä¸€ä¸ªä¸»çª—口中混合使用pack和grid

4.小试牛刀

       Grid布局管理器练习效果如下:

       é¦–先我们可以使用Pack布局管理器管理两个组件Entry(输入框)和Frame(容器)

self.En=Entry(relief=SUNKEN,font=('CourierNew',),width=)self.En.pack(side=TOP,pady=)p=Frame(self.master)p.pack(side=TOP)

       Frame(容器)里面存放计算器?按键,按键是由四行四列组成的网格

Bu=Button(p,text=names[i],font=("Verdana",),width=6)

       ä½¿ç”¨å¾ªçŽ¯æ¥ç”Ÿæˆè®¡ç®—器个按键,并且使用Grid来对它们进行排版

foriinrange(len(names)):Bu=Button(p,text=names[i],font=("Verdana",),width=6)Bu.grid(row=i//4,column=i%4)

       ä½¿ç”¨GUI面向对象编程写法,使用Application(Frame)来创建实例对象,创建组件的方法封装给createWidget()方法,通过构造函数创建好组件

       å®Œæ•´ä»£ç å¦‚下:

fromtkinterimport*importtkinterclassApplication(Frame):def__init__(self,master=None):super().__init__(master)self.master=masterself.Createwidget()defCreatewidget(self):self.En=Entry(relief=SUNKEN,font=('CourierNew',),width=)self.En.pack(side=TOP,pady=)p=Frame(self.master)p.pack(side=TOP)names=("0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=")foriinrange(len(names)):Bu=Button(p,text=names[i],font=("Verdana",),width=6)Bu.grid(row=i//4,column=i%4)root=Tk()root.title("MyfirstApp")app=Application(master=root)root.mainloop()总结

       æœ¬æœŸï¼Œæˆ‘们学习PythonTkinter提供网格布局管理器Grid

       Grid对组件进行网格式水平和垂直进行排版,方便我们更好地使用

       ä»¥ä¸Šæ˜¯æœ¬æœŸå†…容,欢迎大佬们点赞评论指正,下次见~?(`)比心?

推荐阅读PythonTkinter布局管理器之Place布局管理器详解PythonTkinter布局管理器之Pack布局管理器详解作者:盆友圈的小可爱

PythonTkinter组件之Canvas

       å‰è¨€

       å¤§å®¶å°æ—¶å€™éƒ½çŽ©è¿‡æ¶‚鸦吧,不管在哪里,只有有画纸和彩笔,画布上就能出现想象力丰富的图案。

       ä¸Šå­¦æ—¶ï¼Œæˆ‘们面对难题,大家都喜欢在画纸上把自己的思路画出来

       å¦‚今,工作中不管是个人还是团队,在画图软件画思维导图、项目框等等,图形化更加直观

       ç”»å›¾å·¥å…·åœ¨æˆ‘们日常生活中随处可见,我们最常见的有Windows系统-画图,MAC系统的备忘录,那么我们来看一下,画图工具的构造吧

       æ ‡é¢˜ã€æ¯ä¸€æ æè¿°è¯­åŠå½¢çŠ¶ç­‰éƒ½æ˜¯Label标签组件

       ç©ºç™½é¢ç§¯æœ€å¤§çš„是Canvas画布组件

       æŸ¥çœ‹->显示状态是CheckbuttonF复选框组件

       æœ€åŽæˆ‘们要退出或者小化放大窗口按钮是Button组件

       æˆ‘们可以看到,在画图工具中主要的作用就是在那空白的位置添加图片、画图等

       æœ¬æœŸï¼Œæˆ‘们开始学习PythonTkinter标准组件Canvas画布相关属性和方法,Let'sgo~

1.Canvas概述

       Canvas(画布)是PythonTkinter标准组件,可放置图形、图相、组件等功能

       Canvas特点

       Canvas画布是一个矩形区域用来绘制

       Canvas画布可以添加线性、圆形、图片

       Canvas画布支持添加的组件位置、外观

       Canvas画布也提供Button、Label其他组件

       Canvas语法格式

Ca=Canvas(mater,options)2.Canvas相关属性属性含义anchor指定绘制文字、GUI组件的位置。该选项仅对create_text()、create_window()方法有效joinstyle指定直接连接点的风格。仅对绘制直线和多向形有效。该选项支持METTER、ROUND、BEVEL选项值。justify指定文字的对齐方式。该选项支持CENTER、LEFT、RIGHT常量值,该选项仅对create_text方法有效。arrowshape指定箭头形状。该选项是一个形如""的字符串,字符串中的三个整数依次指定填充长度、箭头长度、箭头宽度。arrow指定绘制直线时两端是否有箭头。该选项支持NONE(两端无箭头)、FIRST(开始端有箭头)、LAST(结束端有箭头)、BOTH(两端都有箭头)选项值。extent指定绘制弧的角度。该选项仅对create_arc方法起作用。start指定绘制弧的起始角度。该选项仅对create_arc方法起作用。style指定绘制弧的样式。该选项仅对create_arc方法起作用。该选项支持PIESLICE(扇形)、CHORD(弓形)、ARC(仅绘制弧)选项值。stipple使用位图平铺进行填充。该选项可与fill选项结合使用,fill选项用于指定位图的颜色。dash指定边框使用虚线。该属性值既可为单独的整数,用于指定虚线中线段的长度;也可为形如(5,2,3)格式的元素,此时5指定虚线中线段的长度,2指定间隔长度,3指定虚线长度……依此类推。width指定边框宽度。如果不指定该选项,边框宽度默认为1outline指定边框颜色。fill指定填充颜色。如果不指定该选项,默认不填充。3.Canvas常用方法

       Canvas画布提供绘制图形方法

方法作用create_rectangle()绘制矩形create_oval()绘制椭圆(包括圆,圆是椭圆的特例)create_arc绘制弧create_bitmap绘制位图create_image绘制图片create_line()绘制直线create_polygon绘制多边形create_text绘制文字create_window绘制组件

       Canvas画布提供操作图形标签方法

方法作用addtag_aboove()为tagOrId对应图形项的上一个图形项添加新tagaddtag_all()为所有图形项添加新tagaddtag_below()为tagOrId对应图形项的下一个图形项添加新tagaddtag_closest()为和x、y点最接近的图形项添加新tagaddtag_enclosed()为指定矩形区域内最上面的图形项添加新tagdtag()删除指定图形项的taggettags()获取指定图形的所有Tagfind_withtag()获取tagOrId对应的所有图形项find_above()返回tagOrId对应图形项的上一个图形项find_all()返回全部图形项find_below()返回tagOrId对应图形项的下一个图形项find_closest()返回和x、y点最接近的图形项find_enclosed()返回位于指定矩形区域内最上面的图形项find_overlapping()返回与指定矩形区域重叠的最上面的图形项find_withtag()返回tagOrId对应的全部图形项

       Canvas画布提供操作图形方法

方法作用coords()重设图形项的大小和位置itemconfig()为tagOrId对应图形项配置选项move()移动画布上组件delete()删除画布上组件scale()缩放图形项dchars()删除文字图形项中间的部分文字 重要说明:

       Canvas元素坐标是绘图的基础

       ç‚¹(0,0)位于Canvas组件的左上角

       X轴水平向右延伸

       Y轴垂直向下延伸

4.小试牛刀

       Canvas组件实操练习效果如下:

       åˆ›å»ºCanvas组件

self.Ca=Canvas(self,width=,height=)self.Ca.pack()

       Canvas组件提供create_polygon创建多边形图形

       åæ ‡ï¼ˆx1,y1,x2,y2,x3,y3)可以使用random.randint()来生成

       å¯ä»¥å¤šè¾¹ç»˜åˆ¶ä¸‰è§’å½¢

defdraw_pol(self):self.Ca.create_polygon((1*x1,y1*,x2*1,y2*,x3*,y3*),fill=rcolor)

       Canvas组件提供create_line()来绘制直线

       åæ ‡ï¼ˆx1,y1,x2,y2)可以使用random.randint()来生成

defdraw_line(self):self.Ca.create_line(x1,y1,x2,y2,fill=rcolor)

       Canvas组件提供create_oval()来绘制椭圆形

       åæ ‡ï¼ˆx1,y1,x2,y2)可以使用random.randint()来生成

       æ¤­åœ†åæ ‡ä¹‹é—´æ˜¯æœ‰ä¸€å®šå…³ç³»çš„

defdraw_oval(self):self.Ca.create_oval(x1,y1/2,x2*4,y2*4,fill=rcolor)

       Canvas组件提供create_rectangle()来绘制矩形

       åæ ‡ï¼ˆx1,y1,x2,y2)可以使用random.randint()来生成

       å¯ä»¥ä½¿ç”¨å±žæ€§æ¥è®¾ç½®çŸ©å½¢çš„外观,比如dash属性矩形线条是虚线

defdraw_rect(self):self.Ca.create_rectangle(x1,y1,x2,y2,fill=rcolor,dash=(4,4))

       Canvas组件提供create_image()来添加图片

       åæ ‡ï¼ˆx1,y1)可以使用random.randint()来生成

       è¦è®¾ç½®å…¨å±€è¾¹Photo否则图片无法显示

defdraw_image(self):x1=random.randint(1,)y1=random.randint(1,)globalPhotoPhoto=PhotoImage(file="heart.gif")self.Ca.create_image(x1,y1,image=Photo)

       Canvas组件可以支持绑定鼠标事件,使用鼠标进行绘制任意图形

self.Ca.bind("<B1-Motion>",self.paint)

       ä»¥ä¸Šå›¾å½¢ç»˜åˆ¶çš„颜色是随机产生的

defrandomcolor(self):colorlist=["1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]color=""foriinrange(6):color+=colorlist[random.randint(0,)]return'#'+color

       é¢œè‰²ä»£ç æ˜¯ä»¥â€œ#”开头的6位进制代码

       ä½¿ç”¨for循环进行random.randint()来随机产生每一位的代码

       å®Œæ•´ä»£ç å¦‚下:

fromtkinterimport*importrandomimporttkinterclassApplication(Frame):def__init__(self,master=None):#super()代表的是父类的定义,而不是父类对象super().__init__(master)self.master=masterself.pack()self.createWidgetCanvas()defcreateWidgetCanvas(self):self.Ca=Canvas(self,width=,height=)self.Ca.pack()self.Ca.bind("<B1-Motion>",self.paint)Button(self,text="清空画布",width=,command=(lambdax="all":self.Ca.delete(x))).pack(side="left")Button(self,text="画三角形",width=,command=self.draw_pol).pack(side="left")Button(self,text="画椭圆",width=,command=self.draw_oval).pack(side="left")Button(self,text="画直线",width=,command=self.draw_line).pack(side="left")Button(self,text="画矩形",width=,command=self.draw_rect).pack(side="left")Button(self,text="添加图片",width=,command=self.draw_image).pack(side="left")defdraw_line(self):x1=random.randint(0,)y1=random.randint(0,)x2=random.randint(0,)y2=random.randint(0,)rcolor=self.randomcolor()self.Ca.create_line(x1,y1,x2,y2,fill=rcolor)defdraw_oval(self):x1=random.randint(0,)y1=random.randint(0,)x2=random.randint(0,)y2=random.randint(0,)rcolor=self.randomcolor()self.Ca.create_oval(x1,y1/2,x2*4,y2*4,fill=rcolor)defdraw_rect(self):x1=random.randint(5,)y1=random.randint(5,)x2=random.randint(5,)y2=random.randint(5,)rcolor=self.randomcolor()self.Ca.create_rectangle(x1,y1,x2,y2,fill=rcolor,dash=(4,4))defdraw_pol(self):x1=random.randint(1,)y1=random.randint(1,)x2=random.randint(1,)y2=random.randint(1,)x3=random.randint(1,)y3=random.randint(1,)rcolor=self.randomcolor()self.Ca.create_polygon((1*x1,y1*,x2*1,y2*,x3*,y3*),fill=rcolor)defdraw_image(self):x1=random.randint(1,)y1=random.randint(1,)globalPhotoPhoto=PhotoImage(file="heart.gif")self.Ca.create_image(x1,y1,image=Photo)defpaint(self,event):x1,y1=(event.x-1),(event.y-1)x2,y2=(event.x+1),(event.y+1)self.Ca.create_oval(x1,y1,x2,y2,fill="pink")defrandomcolor(self):colorlist=["1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]color=""foriinrange(6):color+=colorlist[random.randint(0,)]return'#'+colorroot=Tk()root.geometry("x++")root.title("MyfirstAPP")app=Application(master=root)root.mainloop()总结

       æœ¬æœŸï¼Œæˆ‘们学习PythonTkinter提供一个非常强大好玩的Canvas组件。我们使用Canvas组件可以精美的图形,增加我们程序的趣味性。

       ä»¥ä¸Šæ˜¯æœ¬æœŸå†…容,欢迎大佬们点赞评论指正,下次见~?(`)比心?

作者:盆友圈的小可爱

用python做个简单视频播放器,初识tkinter、cv2、PIL图像模块的使用

       用Python制作简单视频播放器,学习tkinter、cv2、PIL基础应用

       一、程序要求

       通过Python创建视频播放软件,使用tkinter设计窗口界面。

       二、播放窗口

       1. 导入tkinter模块并使用,创建主窗口。

       2. 设置窗口标题,显示在窗口左上角。

       3. 使用Label创建标签,显示在窗口上。

       三、加载并播放视频

       1. 加载指定视频文件,确保文件与程序同目录或提供完整路径。

       2. 编写自定义函数`update_frame`用于播放视频。

       3. 读取视频下一帧,返回数据。

       4. 将BGR格式转换为tkinter可识别的RGB格式。

       5. 显示,实现视频播放效果。

       四、源代码概览

       本篇内容概述了制作视频播放器的全过程,包括tkinter、cv2、PIL模块的基本应用,适合初学者尝试实践。代码示例在本部分未列出,建议动手实践以深入理解。

       本文结束。如有疑问,欢迎直接留言,我们将尽速回复。感谢阅读!

PythonTkinter布局管理器之Pack布局管理器详解

       å¤ä¹ å›žé¡¾

       PythonTkinter不仅提供多样的组件,还提供管理组件的布局管理器,主要有三种如下:

       æœ¬æœŸæˆ‘们将学习另外一种使用更加简单的布局管理器Pack,相关属性和使用方法的学习

搓搓双手,打起精神,开启我们今天的学习,Let'sgo~

1.Pack布局管理器概述

       Pack布局管理器是Tkinter提供的管理一个主窗口的组件布局的方法,可创建浮动,自动伸缩扩展在少量组件的排列上使用Pack布局管理器会更加简单方便。

       Pack布局管理器特点

       Pack按照组件的创建顺序将子组件添加到父组件中,按照垂直或者水平方向自然排布。

       Pack如果不指定任何选项,默认在父组件中自顶向下添加组件

       Pack是代码量最少,可以用于快速生成界面

       Pack布局管理器适合的场景

       å°†å°åž‹ç»„件放入窗口中,并使其充满这个窗口

       å°†å°åž‹ç»„件放在顶部

       å¹¶æŽ’放置多个组件

       åªé€‚合简单的垂直或者水平排列

2.Pack常用属性属性作用side指定停靠方向,可选值:left,top,right,bottomfill指定填充颜色,可选值:x(水平方向填充),y(竖直方向填充),both(水平和竖直方向填充),none:不填充expand是否可展空间,可选值True/Falseanchor锚定位,指定组件的位置,可选值:N(北/下),E(东/右),S(南/下),W(西/左),CENTER(中间)padxx方向的外边距padyy方向的外边距iPadxx方向的内边距ipadyy方向的内边距 重要说明:

       side是pack方法最常用属性,side为TOP时示例图如下所示

       side为LEFT时示例图如下所示

       ç»„件独占空间

       ç»„件所在的位置,会根据位置来占据主窗口可用空间的整行或者整列空间

       side=TOP/BOTTOM

       ï¼ˆ1)组件会占据整行

       ï¼ˆ2)后续组件只能依次排在其下面或者上面

       ï¼ˆ3)组件为上下排列方式

       side=LEFT/RIGHT

       ï¼ˆ1)组件会占据整列

       ï¼ˆ2)后续组件只能依次排其左边或者右边

       ï¼ˆ3)组件为左右排列方式

3.小试牛刀

       Pack布局管理器练习效果如下:

       å¦‚上效果图所示,有两个Fream容器组成,分别创建两个容器f1,f2,分别垂直排列

f1=Frame(self)f1.pack()f2=Frame(self)f2.pack()

       Frame1容器里横向排了五个按键

btlist=("popular","chinese","Japanse","Hiap","soft")fortxtinbtlist:Button(f1,text=txt).pack(side=LEFT,padx="")

       äº”个按键存在列表里

       ä½¿ç”¨for循环分别创建5个Button对象

       Button对象主窗口使用f1

       Fream2容器装黑白相间的Label组件

btlist=("popular","chinese","Japanse","Hiap","soft")fortxtinbtlist:Button(f1,text=txt).pack(side=LEFT,padx="")

       Label主主窗口为f2

       ä½¿ç”¨for循环创建个Label对象

       Label背景颜色使用ifelse语句来控制

       ä½¿ç”¨GUI面向对象编程写法,使用Application(Frame)来创建实例对象,创建组件的方法封装给createWidgetPack()方法,通过构造函数创建好组件

       å®Œæ•´ä»£ç å¦‚下:

fromtkinterimport*importrandomclassApplication(Frame):def__init__(self,master=None):#super()代表的是父类的定义,而不是父类对象super().__init__(master)self.master=masterself.pack()self.CreateWidgetpack()defCreateWidgetpack(self):f1=Frame(self)f1.pack()f2=Frame(self)f2.pack()btlist=("popular","chinese","Japanse","Hiap","soft")fortxtinbtlist:Button(f1,text=txt).pack(side=LEFT,padx="")foriinrange(1,):Label(f2,width=5,height=,borderwidth=1,relief="solid",bg="black"ifi%2==0else"white").pack(side="left",padx=2)root=Tk()root.title("MyfirstAPP")app=Application(master=root)root.mainloop()总结

       æœ¬æœŸï¼Œæˆ‘们学习PythonTkinter布局管理器Pack

       Pack布局管理器对于简单小组件能快速实现排布效果。

       ä»¥ä¸Šæ˜¯æœ¬æœŸå†…容,欢迎大佬们点赞评论指正,下次见~?(`)比心?

推荐阅读

       PythonTkinter布局管理器之Grid布局管理器详解

       PythonTkinter布局管理器之Place布局管理器详解

作者:盆友圈的小可爱

copyright © 2016 powered by 皮皮网   sitemap