PyQt5点击按钮,查找电脑中的图片并将它显示在label控件上,并且使用UI代码和逻辑代码分开的方式

水平有限,真心欢迎批评指正!以后会不断完善修改,如果对你有帮助欢迎点赞!

小白教程,当我们掌握了一点点的Qt Designer的技能,得意于能够在界面上作画的时候,怎么编写其中的逻辑关系是我们进一步想要了解的,下面介绍了点击按钮-->寻找电脑中的图片-->加载到TextLabel的简单过程。(vscode编译器、python语言、已经安装好pyqt5)

1、使用Qt Designer,拖了一个push Button控件和一个Label控件后,如下图所示。另外,要注意控件的变量名,后面在编写逻辑代码的时候很重要,例如下图箭头所指就是label控件的变量名了,可以自己定义,pushButton按钮的变量名也是这样。

2、保存后,会在文件夹中出现一个.ui结尾的文件,如下图所示,右键选择“Compile Form”(编译表单),会生成Ui_untitled.py文件。

3、接下来,就在同一个文件夹下,我们创建一个叫Logic_code.py的文件(名字自己起),用来写逻辑的代码,这样一来前端和后端分开,编写逻辑的代码只需要知道UI界面上控件的变量名,就可以编写控件之间的关系。Logic_code.py文件中,首先最基本的,我们要导入库和包、入口函数。

import sys
import Ui_untitled # 注意这里,导入的是你.ui文件所生成的.py文件的名字
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow,QMessageBox,QFileDialog
from PyQt5.QtGui import QPixmap

class Ui_MainWindow(QMainWindow,Ui_untitled.Ui_MainWindow):
    def __init__(self): # 构造方法
        super(Ui_MainWindow, self).__init__()  # 运行父类的构造方法
        self.setupUi(self)  # 传递自己

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

这会你可以右键在终端中运行Logic_code.py文件试一试了,会出现你在Designer中所创作的界面。

4、接下来,我们要进行信号与槽的操作,简单理解就是一个信号触发一个动作,一个起因产生一个或者一个系列的后果。下面的代码是在第三步的基础上加了一些代码,你来找找看多了哪些代码,注意他们的所在行的位置缩进

import sys
import Ui_untitled # 注意这里,导入的是你.ui文件所生成的.py文件的名字
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow,QMessageBox,QFileDialog
from PyQt5.QtGui import QPixmap

class Ui_MainWindow(QMainWindow,Ui_untitled.Ui_MainWindow):
    def __init__(self): # 构造方法
        super(Ui_MainWindow, self).__init__()  # 运行父类的构造方法
        self.setupUi(self)  # 传递自己

        # 导入图片按钮
        self.ImportImg.clicked.connect(self.openImageFile) # 绑定槽函数

    # 自定义槽函数(导入图片按钮)
    def openImageFile(self): 
        imagePath, _ = QFileDialog.getOpenFileName(self, 'chose files', '', 'Image files(*.jpg *.png *.bmp)')
        if imagePath:
            pixmap = QPixmap(imagePath)
            self.DisplayInterface.setPixmap(pixmap)
            self.DisplayInterface.resize(pixmap.width(), pixmap.height())

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

添加的代码具体表达了这样一件事情:

(1)绑定了一个名为ImportImg的按钮的点击事件,当用户点击该按钮的时候会调用openImageFile() 槽函数;

(2)openImageFile() 槽函数是执行的具体任务,是需要自己编写的关键内容:弹出一个文件选择对话框,将用户选择的图片加载到名为DisplayInterface的控件上,并调整标签控件的大小以适应图片的大小。效果如下:

ps:以上的效果是显示图片控件的大小随着图片的大小改变,如果想控件的尺寸不变,让图片适应控件,则在第三步的基础上添加的代码改为以下:

    # 导入图片按钮
    self.ImportImg.clicked.connect(self.openImageFile) # 绑定槽函数   

 # 自定义槽函数(导入图片按钮)
    def openImageFile(self): 
        imagePath, _ = QFileDialog.getOpenFileName()
        if imagePath:
            pixmap = QPixmap(imagePath)    
            # 获取控件的尺寸
            size = self.DisplayInterface.size()
            # 按比例缩放图片
            scaled_pixmap = pixmap.scaled(size, QtCore.Qt.AspectRatioMode.KeepAspectRatio)
            self.DisplayInterface.setPixmap(scaled_pixmap)  

效果如下:

 水平有限,真心欢迎批评指正!以后会不断完善修改,如果对你有帮助欢迎点赞!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值