1.说明:
1.2 python的思维和代码分析,基础复习,列表和推导式。
1.3 注意安装相关库,推荐python3.8和微软vsck & , 8 ] { X t Aode,本机是deepin-linux操m ; u作系统,windows可能在文件路径上注意修改。
2 效果图:
可以换成自己的照片、或者家人,女朋友或老婆,男朋友或者老公。
图片来自网络,仅供学习,明A X - 2星是林心如,如有侵权请告知,及时删除。
3 图片准备
3.1 准备20张jpg的照片4 Q X B n T 2
3.2 因为jpg一般比较大,需要压缩大小,建议6060,也可以自定义。
3.3 批量压缩图片大小的代码:lxpic.py
from PIL import Image
import os.path
import glob
#照片尺寸大小
def Resize(fp S 6ile, outdir, width, height):
im@ d -gFile = Image.open(file)
try:
newImagG U K Ze = imgFile.resize((width, height), Image.BILINEAR) #更改尺寸
newImage.save(os.path.join(outdir, os.K : ; A ] ? o +path.basename(file))) #输出保存图片
except Exception as e:
p6 ] C T G K Nrint(e)
# 图片所在的目录,可自定义res的20张原先准备的图片,因为比较大
for file ig { q l & a Gn glob.glob(\"/h3 P ; Y P Qome/xgj/res/*.jpg\"):
# 新图片存放的目录,根目录下的new文件夹,60和60是修改后的图片大小
Resize(file, \"newP l R g /\", 60, 60)
4 loveinit.py代码:
# coding:utf-8
#m k 9 ] V---导出模块---
import sys
from PyQt5.QtGui import QPixmap
from 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\")! ( G ])
b3=QLabel# s T(win)
b3.setPixmap(QPixmap(\"/home/xgj/Desktop/love/new/] d C ] Z\"+str(3)+\".jpg\"))
b4=QLabel(win)
b4.setPixmap(QPixmap(\| y w +"/home/xgj/Desktop/love/new/\"+str(4)+\".jpg\"))
bT * n5=QLabel(win)
b5.setPixmap(QPixmap(\"/home/xgj/Desktop/love/new/\"+str(5)+\".jpg\"))
b6=QLabel(win)
b6.setPixmap(QPixmap(\"/home/xgj/Dep , _ ! u ) 1 u (sktop/love/new/\"+str(6)+\".jpg\"))
b7=QLabel(win)
b7.setPixt Q b M i & n ^ /map(QPixmap(\"/home/xgj/Desktop/love/new/\"+str(7)+\".jpg\"))
b8=QLabel5 # @ 8 t U D d 2(win)
b8.see D i , [ y b A vtPixma% & { n =p(QPixmap(\"/home/xgj/Desktop/love/new/\"+st$ E ?r(8)+\".jpg\"))
b9=QLabel(win)
b9.setPixms e ; m #ap(QPixmap(\"/home/xgj/Desktop/love/new/\$ ~ [ @ M Q ,"+stg ( _ sr(9)+\".jpg\"))
b10=QLabel(win)
b10.setPixmap(QPixmap(\"E - : k ] 2 G/home/xgjk % x c . 7 U f z/Desktop/love/new/\"+str(10)+\".jpg\"))
b11=QLabel(win)
b11.setPixmap(QPixmap(\"/home/xge O / / Xj/Desh ) R } ~ fktop/love/new/\d G V f"+str(11)+@ x %\".jpg\"))
b12=QLabel(i 0 F t Ywin)
b12.setPixmap(QPixmaW E ^ r Hp(\"/h; 9 e / ] A v qome/xgj/Desktop/love/new/\"+str(12)+\".jpg\"))
b13=QLabel(win)
b13.setPixmap(QPixmap(\"/home/xgj/Desktop/love/new/t { m 3 I e a\"+str(13)+\".jpg\a J J L R 0 ? l N"))
b14Q ; J } - o Q !=QLabel(win)
b14.setPixmap(QPixmap(\"/home/xgj/Desktop/loH X = Yve/new/\"+str(14)+\".jpg\"))
b1x u W5=QLabel(win)
b15.setPixmap(QPixmap(\"/g V F { K B $home/xgj/Desktop/love/new/\"+str(15)+\".I . I Xjpg\c p L { z"))
b16=QLabel(win)
b16.setP7 & % 8 { 2ixmap(QPixmap(\"/home/xgj/Desktop/love0 J @ ( Z L d/new/\"+str(16)+\".jpg\"0 w = | {))
b17=QLabel(win)
b17.setPixmap(QPixmap(\"/home/xgj/Desktc - 5 Bop/love/new/\"+str(17)+p i T W W ^ % ( n\".jpg\"))
b18=QLab8 K K = D 6 g } Del(win)
b1C S b 8 `8.setPixmap(QPixmap(\"/home/xgj/Desktop/love/new/\"+str(18)+\".jpg\"))
b19=QLabel(win)
b19.setPixmap(QPixma1 q Cp(` 4 W\"/home/xgj/Desktop/love/new/\"J 7 , } s U P #+str(19)+\".N L = : C @jpg\"))
b20=QLabel(win)
b20.set{ Z a d + A EPixmap(QPixmap(\"/home/xgj/Desktop/love/new/\"+str(20)+\".jpg\"))
#坐标布局
layout.addWidget(- E e n R 9 % i db1, 0, 3)
layout.addWidget(b2, 0, 7)
layout.addWidget(b3, 1,h ( 6 2)
layout.addWidgetR ( O s j d 7(b4, 1, 4)
layout.ad9 , p o B x cdWl D D lidget(b5, 1, 6)
lad & q F o f Kyout.addWidget([ 6 0 L ! Tb6, 1, 8)
layout.addWa b . l o lidget(b7, 2, 1)
layout.addWidget(b8, 2, 5)
layout.addWidget(b9,S $ d Y _ X R k C 2, 9)
layout.addWidget(b10, 3, 0)
layout.addWidget(b11, 3, 10)
layout.addWidget(b4 & { H M12, 4, 1)
layout.addWidget(b13,^ j 4 T w O d ) ; 4, 9)
layout.addWidget(b14, 5, 2)
layout.addWidget(b15, 5, 8)
layout.addWidget(b16V k % ! m j X +, 6, 3)
layout.addWidget(b17, 6, 7)
layout.addWidget(b18, 7, 4)
layouY + ) N $ Bt{ ! * p X m _ R.addWidget(b19, 7, 6)b d ~ 4 e 4 - ^ Z
layout.addWidget(b20, 8, 5)
#---执行-J ~ g 5 A d v--注意这里没有if name main格式函数---
#if __nam4 = ( e # me__==\ v ,'__main__S x S y E .\': #如果这一行注释掉,那么下面的4行代码需要向左移动顶左V t L S线边
positionSet()
win.setWindowTitle(\'GUI\')
win.show()
sys.exit(app.exec_())o C u
4.1 上述代码,分析if __nam6 ` O 4 $ T .e__==\'_c h i p Z d C ._maie x $ f ] I kn__\e C 4 # } I ^ q':
这是一个判断,假如采用,则判断是假的,那么它就不执行。很多时候发现没有这个判断也可以使用。网k T p 6 * 9 3 u上也有很多解释,建议采用if的这个判断,但是如果为了学习某些个代码,可以简化去掉。
4.2 发现代码很多是重复q ~ g n 5的,那么python的有点就是重复的事情可以采用推导式,简化a O d L,对不对?
这就是python的思维。
5 修改后简h D o U n & g B s洁的代码:lovewall.py
# coding:utf-8
import sys
from PyQtJ $ k S B o a M5.QtGui import QPixmap
from PyQt5.QtWidgets import *
app = QApplication(sys.argv)
win = QWidget()
win.resize(760,e m { = q [ 9 # # 540)
win.move(0, 0)
layoI b ,ut=QGridLayoG ( / p H But(win)
#定义三个列表
z=[]
#坐标列表,w Z n代表位置~ t W t S + k,对应的x和y的位置
x=[0,0,1c R ( s E . t k,1,1,1,2,2,2,3,3,4,4,5,5,6,6,7,7,i P K A s e O _8]
y=[3,7,2,4,6,8,1,5,9,0,10,1,9,2,8,3,7,4,6,5]
#定义X V ) N & 0 l &函数
def positionSet():
#? u n 3 w }推导式图片按钮定义
for i in range(1,21):
z.append(\'b+str(i)\')
z[i-1]=QLabel(win)
#注意文件夹地址适当调整
z[i-1].setPixM f g M kmap(QPixmap(\"/home/xgj/Desktop/love/new/\"+str(i)+\".7 . D 4 ijpg\"))
#推导式图片位置布局
for i in range(21):
layout.addWidget(z[i-1c r t ~],x[i-1],y[i-1])
positionSet()
win.setWindowTitle(x Z X 8\'GUI\')
win.show()
sys. }exit(app.exec_())
本文系本站编辑转载,文章版权归原作者所有,内容为作者个人观点,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请与本站联系,本站将在第一时间删除内容!