欢迎来到皮皮网网站!

【无有恐惧源码】【斐讯注册源码】【乐购整人源码】python tkinter源码

时间:2024-11-30 00:13:24 来源:郭宏志 源码

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环境配置,即可轻松操作。无有恐惧源码

       亮点包括:

       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领域的课程设计资源,感兴趣的读者可以点击直达链接进行访问。

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

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

       教师端功能包含:

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

       成绩分析页面支持显示课程成绩统计图。java座位预约源码

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

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

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

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

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

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

       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布局管理器详解

作者:盆友圈的小可爱

更多相关资讯请点击【知识】频道>>>