龙空技术网

python制作爱心照片墙的代码分析及优化

易三一世 447

前言:

今天兄弟们对“用python写一个爱心”大约比较珍视,同学们都需要分析一些“用python写一个爱心”的相关内容。那么小编同时在网上搜集了一些对于“用python写一个爱心””的相关知识,希望看官们能喜欢,同学们一起来学习一下吧!

1.说明:

1.1 推荐指数:★★★★

1.2 python的思维和代码分析,基础复习,列表和推导式。

1.3 注意安装相关库,推荐python3.8和微软vscode,本机是deepin-linux操作系统,windows可能在文件路径上注意修改。

2 效果图:

可以换成自己的照片、或者家人,女朋友或老婆,男朋友或者老公。

图片来自网络,仅供学习,明星是林心如,如有侵权请告知,及时删除。

3 图片准备

3.1 准备20张jpg的照片

3.2 因为jpg一般比较大,需要压缩大小,建议60×60,也可以自定义。

3.3 批量压缩图片大小的代码:lxpic.py

from PIL import Imageimport os.pathimport glob#照片尺寸大小def Resize(file, outdir, width, height):    imgFile = Image.open(file)    try:        newImage = imgFile.resize((width, height), Image.BILINEAR)    #更改尺寸        newImage.save(os.path.join(outdir, os.path.basename(file)))     #输出保存图片    except Exception as e:        print(e)# 图片所在的目录,可自定义res的20张原先准备的图片,因为比较大for file in glob.glob("/home/xgj/res/*.jpg"):       # 新图片存放的目录,根目录下的new文件夹,60和60是修改后的图片大小    Resize(file, "new", 60, 60) 

4 loveinit.py代码:

# coding:utf-8#---导出模块---import sysfrom PyQt5.QtGui import QPixmapfrom PyQt5.QtWidgets import *#---初始化定义---app = QApplication(sys.argv)win = QWidget()win.resize(760, 540)win.move(0, 0)layout=QGridLayout(win)#---定义函数---def positionSet():    #按钮定义    b1=QLabel(win)    #路径自己定义,可以修改    b1.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(1)+".jpg"))    b2=QLabel(win)    b2.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(2)+".jpg"))    b3=QLabel(win)    b3.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(3)+".jpg"))    b4=QLabel(win)    b4.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(4)+".jpg"))    b5=QLabel(win)    b5.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(5)+".jpg"))    b6=QLabel(win)    b6.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(6)+".jpg"))    b7=QLabel(win)    b7.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(7)+".jpg"))    b8=QLabel(win)    b8.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(8)+".jpg"))    b9=QLabel(win)    b9.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(9)+".jpg"))    b10=QLabel(win)    b10.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(10)+".jpg"))    b11=QLabel(win)    b11.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(11)+".jpg"))    b12=QLabel(win)    b12.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(12)+".jpg"))    b13=QLabel(win)    b13.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(13)+".jpg"))    b14=QLabel(win)    b14.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(14)+".jpg"))    b15=QLabel(win)    b15.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(15)+".jpg"))    b16=QLabel(win)    b16.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(16)+".jpg"))    b17=QLabel(win)    b17.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(17)+".jpg"))    b18=QLabel(win)    b18.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(18)+".jpg"))    b19=QLabel(win)    b19.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(19)+".jpg"))    b20=QLabel(win)    b20.setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(20)+".jpg"))    #坐标布局    layout.addWidget(b1, 0, 3)    layout.addWidget(b2, 0, 7)    layout.addWidget(b3, 1, 2)    layout.addWidget(b4, 1, 4)    layout.addWidget(b5, 1, 6)    layout.addWidget(b6, 1, 8)    layout.addWidget(b7, 2, 1)    layout.addWidget(b8, 2, 5)    layout.addWidget(b9, 2, 9)    layout.addWidget(b10, 3, 0)    layout.addWidget(b11, 3, 10)    layout.addWidget(b12, 4, 1)    layout.addWidget(b13, 4, 9)    layout.addWidget(b14, 5, 2)    layout.addWidget(b15, 5, 8)    layout.addWidget(b16, 6, 3)    layout.addWidget(b17, 6, 7)    layout.addWidget(b18, 7, 4)    layout.addWidget(b19, 7, 6)    layout.addWidget(b20, 8, 5)#---执行---注意这里没有if name main格式函数---#if __name__=='__main__': #如果这一行注释掉,那么下面的4行代码需要向左移动顶左线边positionSet()win.setWindowTitle('GUI')win.show()sys.exit(app.exec_())

4.1 上述代码,分析if __name__=='__main__':

这是一个判断,假如采用,则判断是假的,那么它就不执行。很多时候发现没有这个判断也可以使用。网上也有很多解释,建议采用if的这个判断,但是如果为了学习某些个代码,可以简化去掉。

4.2 发现代码很多是重复的,那么python的有点就是重复的事情可以采用推导式,简化,对不对?

这就是python的思维。

5 修改后简洁的代码:lovewall.py

# coding:utf-8import sysfrom PyQt5.QtGui import QPixmapfrom PyQt5.QtWidgets import *app = QApplication(sys.argv)win = QWidget()win.resize(760, 540)win.move(0, 0)layout=QGridLayout(win)#定义三个列表z=[]#坐标列表,代表位置,对应的x和y的位置x=[0,0,1,1,1,1,2,2,2,3,3,4,4,5,5,6,6,7,7,8]y=[3,7,2,4,6,8,1,5,9,0,10,1,9,2,8,3,7,4,6,5]#定义函数def positionSet():    #推导式图片按钮定义    for i in range(1,21):        z.append('b+str(i)')        z[i-1]=QLabel(win)        #注意文件夹地址适当调整        z[i-1].setPixmap(QPixmap("/home/xgj/Desktop/love/new/"+str(i)+".jpg"))        #推导式图片位置布局    for i in range(21):        layout.addWidget(z[i-1],x[i-1],y[i-1])        positionSet()win.setWindowTitle('GUI')win.show()sys.exit(app.exec_())

标签: #用python写一个爱心 #python编写爱心程序 #网页设计照片墙代码