PYQT5学习文档2-界面组件使用说明

一些常用组件的说明: 

根据 PYQT5学习文档1-安装编辑界面并生成py文件 的内容,重新布局页面内容,把常用的一些功能进行说明。

拖拽组件,并重新命名:

用到的组件有label(标签文本)、line_edit(线文本编辑)、text_browser(文本编辑)、push_button(按钮)、progressBar(进度条),可以根据上面的图进行命名保存为test.ui,在对应的文件夹位置,点击文件,点击下图。

如果是win11,直接在文件夹内点击鼠标右键,选择在终端中打开即可。

运行代码:pyuic5 -o test.py test.ui

生成一个名为test.py的界面文件,可以打开看一下代码

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(528, 321)
        self.start = QtWidgets.QPushButton(Dialog)
        self.start.setGeometry(QtCore.QRect(350, 170, 131, 41))
        self.start.setObjectName("start")
        self.exit = QtWidgets.QPushButton(Dialog)
        self.exit.setGeometry(QtCore.QRect(350, 250, 131, 41))
        self.exit.setObjectName("exit")
        self.lineEdit_folder = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_folder.setGeometry(QtCore.QRect(150, 40, 241, 20))
        self.lineEdit_folder.setObjectName("lineEdit_folder")
        self.lineEdit_file = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_file.setGeometry(QtCore.QRect(150, 70, 241, 20))
        self.lineEdit_file.setObjectName("lineEdit_file")
        self.label_3 = QtWidgets.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(50, 70, 71, 21))
        self.label_3.setObjectName("label_3")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(50, 40, 61, 16))
        self.label_2.setObjectName("label_2")
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setGeometry(QtCore.QRect(50, 160, 256, 141))
        self.textBrowser.setObjectName("textBrowser")
        self.progressBar = QtWidgets.QProgressBar(Dialog)
        self.progressBar.setGeometry(QtCore.QRect(50, 110, 421, 23))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.choise_folder = QtWidgets.QPushButton(Dialog)
        self.choise_folder.setGeometry(QtCore.QRect(420, 40, 75, 23))
        self.choise_folder.setObjectName("choise_folder")
        self.choise_file = QtWidgets.QPushButton(Dialog)
        self.choise_file.setGeometry(QtCore.QRect(420, 70, 75, 23))
        self.choise_file.setObjectName("choise_file")
        self.label_1 = QtWidgets.QLabel(Dialog)
        self.label_1.setGeometry(QtCore.QRect(250, 10, 41, 21))
        self.label_1.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.label_1.setObjectName("label_1")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.start.setText(_translate("Dialog", "开始"))
        self.exit.setText(_translate("Dialog", "退出"))
        self.label_3.setText(_translate("Dialog", "文件路径:"))
        self.label_2.setText(_translate("Dialog", "文件夹路径:"))
        self.choise_folder.setText(_translate("Dialog", "选择文件夹"))
        self.choise_file.setText(_translate("Dialog", "选择文件"))
        self.label_1.setText(_translate("Dialog", "标  题"))

新建一个python执行文件,基础代码如下,调用qt的界面代码

#读取包
from PyQt5 import QtWidgets

# 导入ui文件转换后的py文件
from test import Ui_Dialog

from PyQt5.QtWidgets import QFileDialog
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QLabel,QHBoxLayout,QWidget,QApplication,QMainWindow,QMessageBox
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QWaitCondition, QMutex

import warnings
warnings.filterwarnings("ignore")





#创建窗口类
class mywindow(QtWidgets.QWidget, Ui_Dialog):
    quit_trig = pyqtSignal()
    
    def  __init__ (self):
        super(mywindow, self).__init__()
        #运行界面
        self.setupUi(self)
 
    

if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    ui = mywindow()    
    ui.show()
    sys.exit(app.exec_())

执行成功如下:

这里用了很多qt的库,都是一些常用的库,后续会用到,这里直接把所有的库都先写在这里。

现在窗口建立好了,但是点击是没有效果的,需要把所有的功能链接上功能函数。

首先在窗口类中把对应的函数写好,并且关联上按钮组件,self.组件名.click.connect(函数)

补充代码如下:

#创建窗口类
class mywindow(QtWidgets.QWidget, Ui_Dialog):
    quit_trig = pyqtSignal()
    
    def  __init__ (self):
        super(mywindow, self).__init__()
        #运行界面
        self.setupUi(self)
        
        #选择文件夹按钮与函数链接
        self.choise_folder.clicked.connect(self.write_folder)
        
        #选择文件按钮函数链接
        self.choise_file.clicked.connect(self.read_file)
        
        #开始按钮函数链接
        self.start.clicked.connect(self.process)
        
        #退出按钮函数链接
        self.exit.clicked.connect(self.clickButtonCloseWindow)
    
        #初始化进度条为0,进度默认范围0-100
        self.progressBar.setProperty("value", 0)
    
    
    def write_folder(self):
        #选取文件夹
        foldername = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/")
        #将选取的文件夹路径写入lineEdit_folder中
        self.lineEdit_folder.setText(foldername)
    
    def read_file(self):
        #选取文件路径
        filename, filetype =QFileDialog.getOpenFileName(self, "选取文件", "C:/", "All Files(*);;Text Files(*.csv)")
        #将路径写入 lineEdit_file 中
        self.lineEdit_file.setText(filename)
        
    def clickButtonCloseWindow(self):
        #调用qt的弹窗消息的库
        a = QMessageBox.question(self, '退出', '是否退出程序?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)      #"退出"代表的是弹出框的标题,"你确认退出.."表示弹出框的内容
        if a == QMessageBox.Yes:  
            self.close()        #接受关闭事件  
        else:  
            pass

    def process(self):
        
        #输出文件夹路径:
        self.textBrowser.append(f"输出:{self.lineEdit_folder.text()}")
        # 移动光标到底部
        self.textBrowser.moveCursor(self.textBrowser.textCursor().End) 
        
        #输出文件的路径:
        self.textBrowser.append(f"输出:{self.lineEdit_file.text()}")
        # 移动光标到底部
        self.textBrowser.moveCursor(self.textBrowser.textCursor().End) 
        
        n=10
        for i in range(n):
            time.sleep(0.1)
            #在textbrowser中显示内容
            self.textBrowser.append(f"输出:{i}")
            # 移动光标到底部
            self.textBrowser.moveCursor(self.textBrowser.textCursor().End) 
            
            #界面刷新显示(没有以下代码,界面会出现假死现象,循环运行完成之后才会全部显示出来,可以注释掉对比下)
            #多线程的内容等后面再做补充。
            QtWidgets.QApplication.processEvents()
            
            #设置进度条展示(进度条设置也有刷新的功能,设置进度条后,可以不用上面那个刷新代码,也会有刷新的效果)
            self.progressBar.setProperty("value", (i+1)/n*100)

        运行程序里面,没有实际的功能含义,只是做展示,通过self.组件名称.text()的方式,可以获取组件的文本内容,将数据进行调取,self.textBrowser.append("内容")对整个内容进行运行日志的输出。其他功能可以看代码注释。

        这样一个简单的单界面的小程序就完成了。

其他文档:

PYQT5学习文档1-安装编辑界面并生成py文件
PYQT5学习文档3-多线程应用,防止主界面假死-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值