五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

Python實(shí)戰(zhàn)項(xiàng)目用PyQt5制作漫畫臉GUI界面

發(fā)布日期:2021-12-22 01:14 | 文章來源:gibhub

最終效果

這是最近在學(xué)qt這個(gè)東西,然后又學(xué)會(huì)了調(diào)用api,然后就想了用pyqt5做一個(gè)GUI界面,后期也可以打包分享給其他人使用,所以就最近就寫了一個(gè)簡便的gui界面,有點(diǎn)不好看,大家湊合看一下,主要是學(xué)思路的哈?。?!

那就不多話了,就直接給大家講解??!

別忘了給個(gè)贊吧,支持支持支持孩子吧?。?!

1.PyQt5的安裝。

1.PyQt5庫的安裝。

PyQt5的安裝有兩個(gè)辦法。

  • pip install —xxx(庫名)
  • 把這三個(gè)庫都下載。

  • 配置qt designer

Name:我們自己給這個(gè)tool起的名字

Program:填入designer.exe的路徑,每個(gè)人路徑不同,找到自己計(jì)算機(jī)上的 路徑輸進(jìn)去。一般來說是在site-packages\QtDesigner\designer.exe這里。

Working directory:填入$ProjectFileDir$,表示文件所在的項(xiàng)目路徑

  • 配置轉(zhuǎn)化工具pyuic

Name:自己起的名字

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

Arguements:填入-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
是將.ui文件轉(zhuǎn)化成.py文件的語句。

2.qt designer 布局的使用。

1:打開這個(gè)設(shè)計(jì)師

2:創(chuàng)建一個(gè)窗口

3:設(shè)計(jì)界面,用鼠標(biāo)拖動(dòng)左邊的控件。

界面設(shè)計(jì)完成后點(diǎn)左上角的保存就可以,因?yàn)槲疫@個(gè)就是一個(gè)簡單的界面我就沒有設(shè)置布局之類的,如果有強(qiáng)迫癥的小伙伴可以去設(shè)置布局哦,在csdn中都有資料的哦。

4:ui轉(zhuǎn)化為py

qrcTopy這個(gè)我說一下,因?yàn)檫@個(gè)gui界面沒有用到圖片就沒有qrc轉(zhuǎn)化py,qrc這個(gè)就是把圖片py文件才能在使用ui轉(zhuǎn)化的py,否則就不可以顯示你在qtdesigners 上面設(shè)計(jì)的圖片。

5:在python上面運(yùn)行轉(zhuǎn)化后的py文件

一般轉(zhuǎn)化過來的py文件里面,類都是沒有初始化的,這個(gè)后面有一個(gè)坑,就是文件窗口調(diào)用的時(shí)候,你得初始化繼承qt中的類才能繼續(xù)使用文件窗口那個(gè)功能,小伙伴如果有什么不理解,可以等會(huì)看完整的代碼就明白了。

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

6:運(yùn)行py文件

我們現(xiàn)在運(yùn)行py文件就可以看見下面這個(gè)GUI界面,所以第一步算是完成了。

3.百度智能云api的調(diào)用。

接下來我們來調(diào)用百度智能云的api 。

1.首先我們先打開 百度智能云。

2.

然后我們找到這個(gè)圖像特效

我么可以查看這個(gè)調(diào)用方法,然后去獲取免費(fèi)的調(diào)用機(jī)會(huì)。

主要是獲取到這個(gè)AK 和SK,調(diào)用的時(shí)候需要用到這個(gè)東西。如果吊用還不是很懂的話,可以仔細(xì)看看官方的調(diào)用文檔,接下來話不多說,直接上代碼。

import requests, base64
 
 
# 這個(gè)函數(shù)的操作是為了獲取access_token參數(shù)
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_token
 
 
def img2Cartoon(path):
  request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
 # 二進(jìn)制方式打開圖片文件
  f = open(path, 'rb')
  img1 = base64.b64encode(f.read())
 
  params = {"image":img1}
  access_token = get_access_token()
  request_url = request_url + "?access_token=" + access_token
  headers = {'content-type': 'application/x-www-form-urlencoded'}
  response = requests.post(request_url, data=params, headers=headers)
  print(response.json())
 
 
  # 對響應(yīng)結(jié)果進(jìn)行處理
  if response:
# 打開一個(gè)文件
f = open(path, 'wb')
# 獲取動(dòng)漫頭像
anime = response.json()['image']
# 對返回的頭像進(jìn)行解碼
anime = base64.b64decode(anime)
# 將頭像寫入文件當(dāng)中
f.write(anime)
f.close()
 
 
if __name__ == '__main__':
 
 img2Cartoon()

調(diào)用成功后,我們的這個(gè)第二步就成功了。

4.調(diào)控界面的控件。

接下來我們來給界面的布局建立信號和槽

1.界面一共有三個(gè)標(biāo)簽,兩個(gè)按鍵,一個(gè)輸入表格。

查看圖片我們是直接打開窗口選擇文件然后在輸入表格上面顯示,就是文件窗口我們?nèi)绻褂玫脑?,我們得給類初始化,并繼承qt中的類,才能正常使用其中的qt調(diào)用窗口函數(shù)。

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

然后我們分別給按鍵調(diào)用函數(shù)功能。

  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.translate
  MainWindow.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)")  # 設(shè)置文件擴(kuò)展名過濾,用雙分號間隔
 
if fileName_choose[0] == "":
 print("\n取消選擇")
 return
self.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()
 
pass
 
 
 
 
 
 
 
 def messageDialog(self):
mag_box = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, '警告', '文件異常!')
mag_box.exec_()
 def zh(self):
  import apics #這個(gè)就是調(diào)用api接口那個(gè)函數(shù)
  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)
  pass
 
if __name__ == '__main__':
 
 app = QtWidgets.QApplication(sys.argv)
 MainWindow = QtWidgets.QMainWindow()
 ui = Ui_MainWindow()
 ui.setupUi(MainWindow)
 MainWindow.show()
 sys.exit(app.exec_())

5.最終成果

6.總結(jié)

最后再來一個(gè)小總結(jié)吧。

距離我上次更新又是間隔5天哈哈哈哈,真是太巧了,怎么說呢,寫這個(gè)就是我最近覺得好玩寫的一個(gè)腳本,可能這篇文章沒有人看,也算記錄我的學(xué)習(xí)的成長過程,可能過了幾年后,再回來看看我這個(gè)時(shí)候?qū)懙奈恼拢陀X得很有懷舊感哈哈哈哈哈,雖然我不是大佬,但是我是向著大佬的目標(biāo)前進(jìn)的。只要不放棄,未來可期。

到此這篇關(guān)于Python實(shí)戰(zhàn)項(xiàng)目用PyQt5制作漫畫臉GUI界面的文章就介紹到這了,更多相關(guān)PyQt5 漫畫臉 內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部