首页 > 编程语言 >程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情

程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情

时间:2023-04-13 23:36:20浏览次数:28  
标签:save 程序员 gif self PyQt GIF images btn dir

嗨害大家好鸭!我是小熊猫~

要说程序员工作的最大压力不是来自于工作本身,

而是来自于需要不断学习才能更好地完成工作,
因为程序员工作中面对的编程语言是在不断更新的,
同时还要学习熟悉其他语言来提升竞争力…

好了,学习固然重要,但是也要劳逸结合,
作为一个程序员,我真正想看的是美*女

每天看看美*女,心情都会变好,
心情好了,压力才会小鸭~

程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情_动态图片

话不多说,一起来康康是如何实现的吧~

源码需要可加V:

程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情_动态图片_02

代码展示

导入相关需要使用的模块

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

import imageio

import sys
import os
from datetime import datetime

程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情_生成器_03

UI 界面制作函数过程

def init_ui(self):
    self.setWindowTitle('Gif图片生成器')
    self.setWindowIcon(QIcon('图标.ico'))

    vbox = QVBoxLayout()

    self.moive_label = QLabel()
    gif = QMovie()
    gif.setFileName('20220124215914.gif')
    self.moive_label.setMovie(gif)
    gif.start()

    grid = QGridLayout()

    self.images_text = QLineEdit()
    self.images_text.setPlaceholderText('源图片文件')
    self.images_text.setReadOnly(True)

    self.images_btn = QPushButton()
    self.images_btn.setText('选择图片')
    self.images_btn.clicked.connect(self.images_btn_click)

    self.save_dir = QLineEdit()
    self.save_dir.setPlaceholderText('存储路径')
    self.save_dir.setReadOnly(True)

    self.save_dir_btn = QPushButton()
    self.save_dir_btn.setText('存储路径')
    self.save_dir_btn.clicked.connect(self.save_dir_btn_click)

    self.generate_btn = QPushButton()
    self.generate_btn.setText('快速生成')
    self.generate_btn.clicked.connect(self.generate_btn_click)

    grid.addWidget(self.images_text, 0, 0, 1, 2)
    grid.addWidget(self.images_btn, 0, 2, 1, 1)

    grid.addWidget(self.save_dir, 1, 0, 1, 2)
    grid.addWidget(self.save_dir_btn, 1, 2, 1, 1)

    grid.addWidget(self.generate_btn, 2, 0, 1, 3)

    vbox.addLayout(grid)

    vbox.addWidget(self.moive_label)

    self.setLayout(vbox)

GIF动态图片生成过程

def generate_btn_click(self):
    paths = []
    image_paths = self.images_text.text().strip().split(",")
    for image_path in image_paths:
        if image_path.strip() != '':
            paths.append(image_path)
    print('已选择的图片路径:', paths)
    gif_image = []
    for path in paths:
        gif_image.append(imageio.imread(path))
    gif_path = self.save_dir.text().strip() + '/' + datetime.now().strftime("%Y%m%d%H%M%S") + '.gif'
    imageio.mimsave(gif_path, gif_image, fps=1)
    gif = QMovie()
    gif.setFileName(gif_path)
    self.moive_label.setMovie(gif)
    gif.start()

界面展示

程序员压力大?用 PyQt 做一个美*女GIF设置桌面,每天都有好心情_生成器_04

今天的文章就到这里啦~

我是小熊猫,咱下篇文章再见噜(✿◡‿◡)

标签:save,程序员,gif,self,PyQt,GIF,images,btn,dir
From: https://blog.51cto.com/u_15959262/6188704

相关文章

  • delphi 播放GIF动画
    useGIFImgprocedureTForm1.Button1Click(Sender:TObject);varpic_path:string;beginpic_path:=ExtractFilePath(ParamStr(0))+'img\gif\loading.gif';image1.Picture.LoadFromFile(pic_path);//AnimationSpeed设定动画速度,值越大,速度越快TGIFImage(......
  • 程序员面试金典---4
    字符串压缩思路:使用双指针进行模拟即可classSolution:defcompressString(self,S:str)->str:res=[]#i:左指针,j:右指针i,j,ls=0,0,len(S)whilei<ls:#记数当前字符的连续个数whilej<ls......
  • JSON.stringify()的几个场景
    循环引用使用JSON.stringify()时,遇到循环引用的时候,会抛出错误TypeError:ConvertingcircularstructuretoJSON,如果需要强行转成字符串的话,需要利用到该方法的第二个参数。主要思路其实就是将循环引用的部分替换成某个标识,等到解析的时候去替换掉,就可以拿到原来的循环引用的......
  • #yyds干货盘点# LeetCode程序员面试金典:两两交换链表中的节点
    题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]代码实现:classSolution{publicListN......
  • PyQT5 QFileDialog文件操作程序崩溃处理
    最近用PyQT写个窗体工具,用到QFileDialog处理文件时程序就崩掉了,网上查的降版本,换32位解释器都尝试了都不靠谱,后面无意中看到一段示例代码终于解决了,记录一下,在给掉坑里的小伙伴做个参考。原代码是用qt模板生成的,添加的构造方法:#-*-coding:utf-8-*-fromPyQt5importQtCo......
  • 12年经验的大龄程序员,都用什么写 API 文档?
    写代码,程序员不害怕。写文档,每个程序员都害怕!为什么?技术优先,我们更倾向于将技能和精力更多地放在编写代码上,如果API工具不好使,不便捷,同步麻烦,测试看不懂,更会大大地打击编写文档的积极性。什么才是好用的API工具呢?首先,要易用且提供文档编写工具和模板,可以更容易地编写和组......
  • 程序员下班做什么副业好?实战方法新手小白可上手!1000多字总结
    以前我就是个程序员,所以,现在有做副业的想法是很不错的,可以多点收入,而且以下方法即使不是程序员,新手小白也可以干。我来分享一下做副业的经验和看法;现在我已经往运营方向发展了。作为一个网站开发工程师,我在上家公司干了3年的活,做过javaweb,前端html、js、css,asp.net we......
  • 程序员面试金典---3
    首个祖先方法一:递归三种情况:p、q分别在根节点的左右子树中,那么祖先就是rootp、q均位于根节点的左子树或右子树中,那么祖先在root.left或者root.right中递归。p、q的其中一个节点是根节点,祖先为rootvarlowestCommonAncestor=function(root,p,q){//p、q的其中......
  • #yyds干货盘点# LeetCode程序员面试金典:合并两个有序链表
    题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]代码实现:classSolution{publicLis......
  • 不想做架构师的Gopher不是好程序员
    最近我们在组队学习《手把手带你写一个web框架》,强制PUSH,坚持每天学习打卡,不完成惩罚发红包的那种。你别说,效果还真挺好。昨天学到了架构部分,很受启发,光学不写假把式。(还是得坚持输出哇)我站在大佬的肩膀上输出一篇总结文章出来,希望对大家有帮助:概述所谓架构,与一线开发最大......