Pyqt5基础知识!!!--小白学习日记(1)

毕设要做个系统界面,选择了简单易操作的Pyqt5,把近日了解的有关知识分享给大家,也给自己的学习做个记录!!!


正式开始介绍啦!!!

首先下载Qtdeigner

下载网址https://build-system.fman.io/qt-designer-download

按照自己的版本选择安装哟!!!

安装完成,打开是这个样子的。

界面创建

可以选择Main Window和Widget进行创建,那他们的区别在哪里呢。下面我们仔细看看。

图一是Main Window 创建,图二是Widget创建的。

 图一

图二

 如图三所示我们可以看到Main Window多了Type Here(菜单栏)。其他没有什么区别。

 图三

一切从简,我选择了Widget来进行创建。

拖拉组件构成界面

在这个软件中,我们可以通过直接拖拉小组件的方式来构成我们的界面。

那我们先来认识这些组件吧!!!

下面的博客介绍的很全面哦!!!大家可以去看看!!!

参考博客(182条消息) QTDesigner常用组件及方法_Hi~晴天大圣的博客-CSDN博客

UI文件转化成python文件方法

我们打开cmd,进入UI文件的目录。下图是我的文件下的ui文件,名称是translate.ui,我想将它转化成translate_1.py

 代码如下:

pyuic5 -o translate_1.py transalte.ui

格式 pyuic5 -o xxx.py xxx.ui,打住先别操作!!!

但是这样生成的py文件运行之后不会有窗口出现,我们需要加入-x

pyuic5 -o translate_1.py transalte.ui -x

格式 pyuic5 -o xxx.py xxx.ui -x

这样就会由我们想要的文件生成啦!!!

 我的translate_1.py文件生成啦!!!

接下来的任务就是小组件实现相应的功能啦!!!

首先展示一下我的界面设计

我的界面由7个按钮,四个文本框。我们来讲讲他们的实现。(除了图像着色和图像增强哟,设计其他算法太多,有些杂乱)

def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "图像修复"))
        self.pushButton_4.setText(_translate("Form", "请选择图片"))
        self.textBrowser_4.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.pushButton_6.setText(_translate("Form", "图像增强"))
        self.pushButton_7.setText(_translate("Form", "图像着色"))
        self.pushButton_8.setText(_translate("Form", "展示原图"))
        self.label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:18pt; font-weight:600; color:#55007f;\">图像修复界面</span></p></body></html>"))
        self.pushButton_9.setText(_translate("Form", "图像保存"))
        self.pushButton_10.setText(_translate("Form", "图像保存"))
        self.pushButton.setText(_translate("Form", "退出系统"))
        # self.label_2.setText(_translate("Form", "渲染因子"))

》》》请选择文件按钮--pushButton4

功能:在所在磁盘选择任意图片,并且将图片路径写入textBrowser_4中显示出来。

首先按钮触发dir函数

self.pushButton_4.clicked.connect(self.dir)

然后自定义函数dir

def dir(self):
    #imgName imgType文件路径、文件类型
        imgName, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
    #将图片路径显示到textBrowser中
        self.textBrowser_4.setText(imgName)
        return imgName

》》》展示原图--pushButton8

功能:根据textBrowser_4中的路径,将选择的图片显示在

首先按钮触发openimage函数

self.pushButton_8.clicked.connect(self.openimage)

然后自定义函数oprnimage

    def openimage(self):
        #获取图片路径
        imgName=self.textBrowser_4.toPlainText()
        #调整图片的大小
        image = QImage(imgName).scaled(self.textEdit.width(), self.textEdit.height())
        #图片显示在textEdit中
        cursor = self.textEdit.textCursor()
        document = self.textEdit.document()
        document.addResource(QTextDocument.ImageResource, QUrl("image"), image)
        cursor.insertImage("image")

》》》图像保存--pushButton4

功能:保存修复的图片到磁盘任意的位置,是根据文件的路径不是从textEdit中获取的哟(偷懒)

首先按钮触发save_event_color函数

self.pushButton_9.clicked.connect(self.save_event_color)

然后自定义函数save_event_color

    def save_event_color(self):
        # _translate = QtCore.QCoreApplication.translate
        imgName, imgType = QFileDialog.getSaveFileName(None, "保存图片", "", "*.jpg;;*.png;;All Files(*)")
        # 打印保存文件的全部路径(包括文件名和后缀名)
        with Image.open('result_images/1.png') as img:
        # 将图像保存到新文件
            img.save(imgName)

》》》退出系统--pushButton

功能:退出图像修复系统

首先按钮触发Closewindowr函数

self.pushButton.clicked.connect(self.Closewindow)

然后自定义函数save_event_color

def Closewindow(self):
        self.close()

总体代码如下

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'pr.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 run import main
# from PyQt5 import QtCore, QtGui, QtWidgets
# from cProfile import run
from asyncio.windows_events import NULL
from PIL import Image
import sys
# import run
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QPixmap
import os

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(909, 546)
        self.pushButton_4 = QtWidgets.QPushButton(Form)
        self.pushButton_4.setGeometry(QtCore.QRect(56, 101, 221, 40))
        self.pushButton_4.setObjectName("pushButton_4")
        self.textBrowser_4 = QtWidgets.QTextBrowser(Form)
        self.textBrowser_4.setGeometry(QtCore.QRect(286, 101, 611, 40))
        self.textBrowser_4.setObjectName("textBrowser_4")
        self.pushButton_6 = QtWidgets.QPushButton(Form)
        self.pushButton_6.setGeometry(QtCore.QRect(630, 450, 101, 41))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(Form)
        self.pushButton_7.setGeometry(QtCore.QRect(350, 450, 101, 41))
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(Form)
        self.pushButton_8.setGeometry(QtCore.QRect(80, 452, 181, 41))
        self.pushButton_8.setObjectName("pushButton_8")
        self.line = QtWidgets.QFrame(Form)
        self.line.setGeometry(QtCore.QRect(27, 165, 871, 20))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(Form)
        self.line_2.setGeometry(QtCore.QRect(19, 176, 20, 331))
        self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(Form)
        self.line_3.setGeometry(QtCore.QRect(310, 172, 20, 331))
        self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(Form)
        self.line_4.setGeometry(QtCore.QRect(590, 172, 20, 331))
        self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.line_5 = QtWidgets.QFrame(Form)
        self.line_5.setGeometry(QtCore.QRect(890, 173, 20, 331))
        self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_5.setObjectName("line_5")
        self.line_6 = QtWidgets.QFrame(Form)
        self.line_6.setGeometry(QtCore.QRect(30, 492, 871, 20))
        self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_6.setObjectName("line_6")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(350, 30, 271, 51))
        self.label.setTextFormat(QtCore.Qt.AutoText)
        self.label.setObjectName("label")
        self.textEdit = QtWidgets.QTextEdit(Form)
        self.textEdit.setGeometry(QtCore.QRect(43, 203, 261, 221))
        self.textEdit.setObjectName("textEdit")
        self.textEdit_2 = QtWidgets.QTextEdit(Form)
        self.textEdit_2.setGeometry(QtCore.QRect(330, 200, 261, 221))
        self.textEdit_2.setObjectName("textEdit_2")
        self.textEdit_3 = QtWidgets.QTextEdit(Form)
        self.textEdit_3.setGeometry(QtCore.QRect(610, 200, 261, 221))
        self.textEdit_3.setObjectName("textEdit_3")
        self.pushButton_9 = QtWidgets.QPushButton(Form)
        self.pushButton_9.setGeometry(QtCore.QRect(480, 450, 101, 41))
        self.pushButton_9.setObjectName("pushButton_9")
        self.pushButton_10 = QtWidgets.QPushButton(Form)
        self.pushButton_10.setGeometry(QtCore.QRect(760, 450, 101, 41))
        self.pushButton_10.setObjectName("pushButton_10")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(680, 40, 141, 31))
        self.pushButton.setObjectName("pushButton")
        # self.label_2 = QtWidgets.QLabel(Form)
        # self.label_2.setGeometry(QtCore.QRect(380, 430, 91, 20))
        # self.label_2.setObjectName("label_2")
        # self.spinBox = QtWidgets.QSpinBox(Form)
        # self.spinBox.setGeometry(QtCore.QRect(489, 426, 81, 22))
        # self.spinBox.setObjectName("spinBox")
        # self.spinBox.setValue(5)
        # print(int(self.spinBox.text()))
        self.pushButton_4.clicked.connect(self.dir)
        self.pushButton_7.clicked.connect(self.color)
        self.pushButton_6.clicked.connect(self.clearness)
        self.pushButton_8.clicked.connect(self.openimage)
        self.pushButton_9.clicked.connect(self.save_event_color)
        self.pushButton_10.clicked.connect(self.save_event_clear)
        self.pushButton.clicked.connect(self.Closewindow)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
    def dir(self):
    #imgName imgType文件路径、文件类型
        imgName, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
    #将图片路径显示到textBrowser中
        self.textBrowser_4.setText(imgName)
        return imgName
        
    def openimage(self):
        #获取图片路径
        imgName=self.textBrowser_4.toPlainText()
        #调整图片的大小
        image = QImage(imgName).scaled(self.textEdit.width(), self.textEdit.height())
        #图片显示在textEdit中
        cursor = self.textEdit.textCursor()
        document = self.textEdit.document()
        document.addResource(QTextDocument.ImageResource, QUrl("image"), image)
        cursor.insertImage("image")
    def color(self):
        imgName=self.textBrowser_4.toPlainText()
        # 打开图像文件
        with Image.open(imgName) as img:
        # 将图像保存到新文件
            img.save('data/1.png')
        # render_factor=int(self.spinBox.text())
        os.system('python run.py')
        # os.system('exit')
        image = QImage('result_images/1.png').scaled(self.textEdit.width(), self.textEdit.height())
        cursor = self.textEdit_2.textCursor()
        document = self.textEdit_2.document()
        document.addResource(QTextDocument.ImageResource, QUrl("image"), image)
        cursor.insertImage("image")
    def clearness(self):
        imgName=self.textBrowser_4.toPlainText()
        path =self.textEdit_2.toPlainText()
        # print("空否")
        # print(path)
        # print(len(path))
        if path=="":
            print("yes")
            with Image.open(imgName) as img:
                img.save('E:/Code/GFPGAN-master/data/1.png')
        else:
            with Image.open('result_images/1.png') as img:
                img.save('E:/Code/GFPGAN-master/data/1.png')
        os.chdir('E:/Code/GFPGAN-master')
        os.system('python inference_gfpgan.py -i data -o results -v 1.3 -s 2')
        # os.system('python inference_gfpgan.py -i data -o results -v 1.3 -s 2')
        # os.system('start cmd.exe /K cd D:\GFPGAN-master /K python inference_gfpgan.py -i data -o results -v 1.3 -s 2')
        image = QImage('E:/Code/GFPGAN-master/results/restored_imgs/1.png').scaled(self.textEdit.width(), self.textEdit.height())
        cursor = self.textEdit_3.textCursor()
        document = self.textEdit_3.document()
        document.addResource(QTextDocument.ImageResource, QUrl("image"), image)
        cursor.insertImage("image")

    def save_event_color(self):
        # _translate = QtCore.QCoreApplication.translate
        imgName, imgType = QFileDialog.getSaveFileName(None, "保存图片", "", "*.jpg;;*.png;;All Files(*)")
        # 打印保存文件的全部路径(包括文件名和后缀名)
        with Image.open('result_images/1.png') as img:
        # 将图像保存到新文件
            img.save(imgName)
    def save_event_clear(self):
        # _translate = QtCore.QCoreApplication.translate
        imgName, imgType = QFileDialog.getSaveFileName(None, "保存图片", "", "*.jpg;;*.png;;All Files(*)")
        # 打印保存文件的全部路径(包括文件名和后缀名)
        with Image.open('E:/Code/GFPGAN-master/results/restored_imgs/1.png') as img:
        # 将图像保存到新文件
            img.save(imgName)
    def Closewindow(self):
        self.close()
  
    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "图像修复"))
        self.pushButton_4.setText(_translate("Form", "请选择图片"))
        self.textBrowser_4.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.pushButton_6.setText(_translate("Form", "图像增强"))
        self.pushButton_7.setText(_translate("Form", "图像着色"))
        self.pushButton_8.setText(_translate("Form", "展示原图"))
        self.label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:18pt; font-weight:600; color:#55007f;\">图像修复界面</span></p></body></html>"))
        self.pushButton_9.setText(_translate("Form", "图像保存"))
        self.pushButton_10.setText(_translate("Form", "图像保存"))
        self.pushButton.setText(_translate("Form", "退出系统"))
        # self.label_2.setText(_translate("Form", "渲染因子"))
        
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

 实现效果:

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'aaa.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! import sys, os from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5 import QtCore, QtGui, QtWidgets class U_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1204, 836) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(80, 240, 1041, 371)) self.tableWidget.setAutoScrollMargin(9) self.tableWidget.setRowCount(9) self.tableWidget.setColumnCount(8) self.tableWidget.setObjectName("tableWidget") item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = Q

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值