目录

最终效果

前言

1.PyQt5的安装。

2.qt designer 布局的使用。

3.ui转化为py文件

4.百度智能云api的调用。

5.调控界面的控件。

6最终成果


最终效果

前言

这是最近在学qt这个东西,然后又学会了调用api,然后就想了用pyqt5做一个GUI界面,后期也可以打包分享给其他人使用,所以就最近就写了一个简便的gui界面,有点不好看,大家凑合看一下,主要是学思路的哈!!!

那就不多话了,就直接给大家讲解!!

别忘了给个赞吧,支持支持支持孩子吧!!!

1.PyQt5的安装。

1.PyQt5库的安装

PyQt5的安装有两个办法。

1:pip install —xxx(库名)

2:把这三个库都下载。

3:配置qt designer

Name:我们自己给这个tool起的名字

Program:填入designer.exe的路径,每个人路径不同,找到自己计算机上的 路径输进去。一般来说是在site-packages\QtDesigner\designer.exe这里。

Working directory:填入$ProjectFileDir$,表示文件所在的项目路径

4:配置转化工具pyuic

Name:自己起的名字

Program:python.exe所在的位置,一般在Python\Python38-32\python.exe这里

Arguements:填入-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
是将.ui文件转化成.py文件的语句。

2.qt designer 布局的使用。

1:打开这个设计师

2:创建一个窗口

3:设计界面,用鼠标拖动左边的控件。

界面设计完成后点左上角的保存就可以,因为我这个就是一个简单的界面我就没有设置布局之类的,如果有强迫症的小伙伴可以去设置布局哦,在csdn中都有资料的哦。

4:ui转化为py

qrcTopy这个我说一下,因为这个gui界面没有用到图片就没有qrc转化py,qrc这个就是把图片py文件才能在使用ui转化的py,否则就不可以显示你在qtdesigners 上面设计的图片。

5:在python上面运行转化后的py文件

一般转化过来的py文件里面,类都是没有初始化的,这个后面有一个坑,就是文件窗口调用的时候,你得初始化继承qt中的类才能继续使用文件窗口那个功能,小伙伴如果有什么不理解,可以等会看完整的代码就明白了。

if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

6:我们现在运行py文件就可以看见下面这个GUI界面,所以第一步算是完成了。

3.百度智能云api的调用。

接下来我们来调用百度智能云的api  。

1.首先我们先打开 百度智能云。

2.

然后我们找到这个图像特效

我么可以查看这个调用方法,然后去获取免费的调用机会。

主要是获取到这个AK 和SK,调用的时候需要用到这个东西。如果吊用还不是很懂的话,可以仔细看看官方的调用文档,接下来话不多说,直接上代码。

import requests, base64# 这个函数的操作是为了获取access_token参数
def get_access_token():url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[AK]&client_secret=[SK]'res = requests.post(url)res = res.json()# print(res)access_token = res['access_token']return access_tokendef img2Cartoon(path):request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"# 二进制方式打开图片文件f = open(path, 'rb')img1 = base64.b64encode(f.read())params = {"image":img1}access_token = get_access_token()request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)print(response.json())# 对响应结果进行处理if response:# 打开一个文件f = open(path, 'wb')# 获取动漫头像anime = response.json()['image']# 对返回的头像进行解码anime = base64.b64decode(anime)# 将头像写入文件当中f.write(anime)f.close()if __name__ == '__main__':img2Cartoon()

调用成功后,我们的这个第二步就成功了。

4.调控界面的控件。

接下来我们来给界面的布局建立信号和槽

1.界面一共有三个标签,两个按键,一个输入表格。

查看图片我们是直接打开窗口选择文件然后在输入表格上面显示,就是文件窗口我们如果要使用的话,我们得给类初始化,并继承qt中的类,才能正常使用其中的qt调用窗口函数。

class Ui_MainWindow(QtWidgets.QMainWindow):def __init__(self):super(Ui_MainWindow, self).__init__()

然后我们分别给按键调用函数功能。

        self.pushButton.clicked.connect(self.xians)self.pushButton_2.clicked.connect(self.zh)

可能还有一些小伙伴没有看明白,我们直接上源码吧

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'six.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgets
import os,sys
from PyQt5.QtWidgets import *class Ui_MainWindow(QtWidgets.QMainWindow):def __init__(self):super(Ui_MainWindow, self).__init__()def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1062, 652)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(40, 10, 471, 451))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(570, 10, 431, 451))self.label_2.setObjectName("label_2")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(150, 530, 151, 41))self.pushButton.setStyleSheet("font: 16pt \"仿宋\";")self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(740, 530, 151, 41))self.pushButton_2.setStyleSheet("font: 16pt \"仿宋\";")self.pushButton_2.setObjectName("pushButton_2")self.widget = QtWidgets.QWidget(self.centralwidget)self.widget.setGeometry(QtCore.QRect(350, 200, 110, 17))self.widget.setObjectName("widget")self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)self.horizontalLayout.setContentsMargins(0, 0, 0, 0)self.horizontalLayout.setObjectName("horizontalLayout")self.widget1 = QtWidgets.QWidget(self.centralwidget)self.widget1.setGeometry(QtCore.QRect(340, 490, 371, 41))self.widget1.setObjectName("widget1")self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget1)self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)self.horizontalLayout_2.setObjectName("horizontalLayout_2")self.label_3 = QtWidgets.QLabel(self.widget1)self.label_3.setStyleSheet("font: 12pt \"隶书\";")self.label_3.setObjectName("label_3")self.horizontalLayout_2.addWidget(self.label_3)self.lineEdit = QtWidgets.QLineEdit(self.widget1)self.lineEdit.setObjectName("lineEdit")self.horizontalLayout_2.addWidget(self.lineEdit)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 1062, 26))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "漫画脸生成"))self.label.setText(_translate("MainWindow", "原图"))self.label_2.setText(_translate("MainWindow", "漫画脸"))self.pushButton.setText(_translate("MainWindow", "查看原图:"))self.pushButton_2.setText(_translate("MainWindow", "生成漫画脸"))self.label_3.setText(_translate("MainWindow", "图片地址:"))self.pushButton.clicked.connect(self.xians)self.pushButton_2.clicked.connect(self.zh)def xians(self):self.cwd = os.getcwd()print(type(self.cwd))fileName_choose = QFileDialog.getOpenFileName(self, "文件打开",# 起始路径self.cwd,"All Files (*);;Text Files (*.txt)")  # 设置文件扩展名过滤,用双分号间隔if fileName_choose[0] == "":print("\n取消选择")returnself.lineEdit.setText(fileName_choose[0])if os.path.isfile(self.lineEdit.text()) == True:png = QtGui.QPixmap(self.lineEdit.text())self.label.setPixmap(png)self.label.setScaledContents(True)else:self.messageDialog()passdef messageDialog(self):mag_box = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, '警告', '文件异常!')mag_box.exec_()def zh(self):import apics #这个就是调用api接口那个函数path = self.lineEdit.text()path = path.replace('\\', '\\\\')apics.img2Cartoon(path)png = QtGui.QPixmap(self.lineEdit.text())self.label_2.setPixmap(png)self.label_2.setScaledContents(True)passif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

5.最终成果

6.总结

最后再来一个小总结吧。

距离我上次更新又是间隔5天哈哈哈哈,真是太巧了,怎么说呢,写这个就是我最近觉得好玩写的一个脚本,可能这篇文章没有人看,也算记录我的学习的成长过程,可能过了几年后,再回来看看我这个时候写的文章,就觉得很有怀旧感哈哈哈哈哈,虽然我不是大佬,但是我是向着大佬的目标前进的。只要不放弃,未来可期。

我还写了一个国庆小头像的GUI界面,等这几天没事了在发出来。

记着点个赞!!!!

点个赞!!!!!

给自己“帅气”的脸蛋动漫化吧——PyQt5之漫画脸GUI界面(保姆级教程)相关推荐

  1. 快速去除GIF动图的背景(让背景变透明),保姆级教程

    很多小伙伴在看到好看的动图效果时,想用在自己的页面上,可是常常会碰到一些动图背景颜色不符合自己的需求,所以会产生修改动图背景的想法,但是GIF动图终究是GIF动图,不像静态图片那样子处理起来快捷. 在 ...

  2. 保姆级教程 玩客云 刷armbian 挂甜糖CDN GIF动图教程

    前言 前些天研究 矿渣玩客云 刷openwrt 单臂/旁路由 与N1能否一战?在恩山潜水许久,看到有关于玩客云刷armbian跑甜糖CDN的教程,我作为赚钱宝时代就开始共享限制宽带补贴套餐费的玩家,对 ...

  3. 思科模拟器|Cisco Packet Tracer v6.2 安装与汉化保姆级教程

    所用软件:Cisco Packet Tracer v6.2 安装包 和  Chinese_chi.ptl 汉化文件 目录 一:Cisco Packet Tracer v6.2 软件安装 二.运用Chi ...

  4. AD09 DXP保姆级教程系列——001、汉化与新建工程

    汉化 1.打开软件 2.选中此处DXP,选中优先选项 3.点击使用本地资源,及Use localized resources后重启打开,无需安装汉化包之类的 4.重启后即可看到已经完成汉化 新建一个工 ...

  5. 人脸动漫化AnimeGAN V2的具体实施步骤

    本文提供应对课设,毕设的小伙伴们一些参考:项目是参照网络上比较火的一个项目AnimeGAN V2,然后当时的一个课题也是跟这个相关,然后我是直接调用这个的,但是中间遇到过很多的问题,现在想说明一些问题 ...

  6. 用Python实现抖音上的“人像动漫化”特效,原来这么简单

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个人像动漫化的操作,顿时觉得很好玩儿.我心想:Python 既然这么强大,是不是也可以使用 Python 程序来 ...

  7. 用 Python 实现抖音上的“人像动漫化”特效,原来这么简单!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个人像动漫化的操作,顿时觉得很好玩儿.我心想:Python 既然这么强大,是不是也可以使用 Python 程序来 ...

  8. python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...

    原标题:用Python实现抖音上的"人像动漫化"特效,原来这么简单 作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个 人像动漫化的操作,顿 ...

  9. python将图片转动漫_如何把照片变成手绘动漫化?

    看了各位答主的回答,大都是利用 ps 或者是相应的 app 来实现动漫效果的. 其中的原理大同小异,大家看我这篇文章就足够了! 1.普通照片和动漫图片的区别 要想搞清楚怎么变成动漫化风格,首先就要明白 ...

最新文章

  1. PyTorch 笔记(01)— Ubuntu 使用 pip 清华源安装 PyTorch
  2. php curl选项列表(超详细)
  3. 天天写业务代码?写业务代码中的成长机会!
  4. Java数据类型和MySql数据类型对应表
  5. thinkPHP5.0表单令牌使用
  6. nginx 电子书_13本免费的电子书,拿走,不谢
  7. OpenWares | Open Source and Free Matters » 为rm命令增加回收站功能
  8. PaaS适用于哪些场景?让案例说话
  9. 计算机ppt制作培训心得,计算机培训心得
  10. android暗水印技术,基于Android的隐藏数字水印技术的研究与实现
  11. 泛函分析笔记08:有界线性算子和泛函介绍与共鸣定理
  12. Android实现圆形图片 真菜鸟食用
  13. python基础语法学习一
  14. win10电脑录教学视频的时候有回声或者通话的时候有回声,严重干扰录制效果,解决方式。...
  15. IPv6路由信息的序号
  16. 古风系统仙侠文推荐_不容错过仙侠文强推:文笔超好,挑灯夜读系列,看完顿觉书荒...
  17. java Swing+mysql+JDBC实现教务系统(源码+数据库+UML图+数据库分析)
  18. 肇庆学院"菜鸟杯"程序设计竞赛2019 A.解锁专家
  19. MySQL Workbench使用教程简介
  20. MySQLdb 使用方法

热门文章

  1. 共享本人收藏的php编程软件
  2. 微信之夜,张小龙说视频化表达将会成为下一个十年内容领域的主题
  3. 【入门】Elasticsearch基本语句
  4. 苹果审核指南(中文)
  5. 荒岛余生2java攻略_荒岛余生2时空探秘_荒岛余生2:时空探秘全剧情+全主,支线任务+道具收集_安卓应用游戏下载- AppChina应用汇...
  6. 如何做好人生效率管理
  7. [转帖]谁拥有?谁控制?华为股权结构与治理架构全披露
  8. 网线、集线器、交换机、路由器等
  9. 宿舍管理人员使用的宿舍管理软件——C代码
  10. Swift封装 计算器开发