首页 > 编程语言 >Python---PyQT5之QPushButton

Python---PyQT5之QPushButton

时间:2024-06-04 15:45:46浏览次数:18  
标签:__ Python self label --- QPushButton path QtWidgets image

from PyQt5 import QtWidgets
from PyQt5 import QtCore, QtGui
import sys
import cv2


class ButtonPanel(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        select_btn = QtWidgets.QPushButton("图像选择")

        self.path_label = QtWidgets.QLabel()
        self.path_label.setText("当前未显示图像路径")
        self.path_label.setAlignment(QtCore.Qt.AlignCenter)  # label上居中显示
        self.path_label.setMaximumHeight(50)  # label最大高度设置
        self.path_label.setStyleSheet("background-color:pink;color:green")  # 背景颜色设置
        font = QtGui.QFont()
        font.setBold(True)
        font.setPointSizeF(10)
        self.path_label.setFont(font)

        self.image_label = QtWidgets.QLabel()

        # 方法二:使用cv2显示
        src = cv2.imread("./image/img1.png")  # BGR
        image = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)  # 将BGR转为RGB
        h, w, c = image.shape
        img = QtGui.QImage(image.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)
        pixmap = QtGui.QPixmap(img)
        pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式
        self.image_label.setPixmap(pix)  # 设置图像显示
        self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示
        self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置

        btn_panel = QtWidgets.QGroupBox("图像文件选择")
        hboxlayout = QtWidgets.QHBoxLayout()
        hboxlayout.addWidget(self.path_label)
        hboxlayout.addWidget(select_btn)
        hboxlayout.addStretch(1)
        btn_panel.setLayout(hboxlayout)

        vboxlayout = QtWidgets.QVBoxLayout()
        vboxlayout.addWidget(self.image_label)
        vboxlayout.addWidget(btn_panel)
        vboxlayout.addStretch(1)
        self.setLayout(vboxlayout)

        # 绑定点击
        select_btn.clicked.connect(self.on_select_image)

    def on_select_image(self):
        fileinfo = QtWidgets.QFileDialog.getOpenFileName(self, "打开图像文件", ".", "图像文件(*.jpg *.png)")
        fileName = fileinfo[0]
        if fileName != "":
            self.path_label.setText(fileName)
            pixmap = QtGui.QPixmap(fileName)
            pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式
            self.image_label.setPixmap(pix)   # 设置图像显示


if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    main_win = QtWidgets.QMainWindow()
    main_win.setWindowTitle("图像浏览显示")
    myPanel = ButtonPanel()
    main_win.setCentralWidget(myPanel)
    main_win.setMinimumSize(1080, 720)
    main_win.show()
    app.exec_()

标签:__,Python,self,label,---,QPushButton,path,QtWidgets,image
From: https://www.cnblogs.com/jackchen28/p/18230952

相关文章

  • FreeRTOS-队列基础
    以下内容为个人的初学记录,如有错误,欢迎指正一、概述队列用于数据的传输,数据按照**“先进先出”**(FIFO)的规则;一般情况下,数据被放入到底部(Back)指向的位置(除非使用向头部写入数据的函数),被头部(Front)指向时被读出队列能够进行阻塞、唤醒,当接收任务发现队列为空时,会进入阻塞而......
  • 华为OD机试2024年最新题库(Python、JAVA、C、C++合集)C卷+D卷
    介绍博主介绍:CSDN领军人物top1的作者,全网粉丝30w+,文章累计被阅读3800w+,直接帮助200+,间接帮助800+同学进入od添加或私信博主免费获取本题解析以及代码24年5月份开始,考的都是OD统一考试(D卷),题库已经整理好了,命中率95%以上。5-10月份考的都是D卷真题,都是原题,圈内有多种......
  • uniapp uni-popup弹窗出现禁止底部页面页面滚动
    介绍|uni-app官网(dcloud.net.cn)为兼容各端,事件需使用@的方式绑定,请勿使用小程序端的bind和catch进行事件绑定;也不能在JS中使用event.preventDefault()和event.stopPropagation()方法;若需要禁止蒙版下的页面滚动,可使用@touchmove.stop.prevent="moveHandle",moveHa......
  • 基于 PyTorch 的 Python 深度学习:注意力机制
    基于PyTorch的Python深度学习:注意力机制深度学习在近年来取得了巨大的进步,而注意力机制(AttentionMechanism)作为其中的一个重要概念,为模型提供了一种捕捉输入数据中不同部分之间关系的能力。在本文中,我们将探讨注意力机制的基本概念,以及如何在PyTorch框架下实现注意......
  • python09 字符串切片
    字符串切片'''字符串切片(字符串截取)语法:[start:stop:step]1.start=>开始索引默认:02.stop=>结束索引,不包括stop默认:到最后3.step=>步长默认:1三个都有默认值,但注意不能一个都不写。text="hello,python"索引:0:h1:e2:l3:l4:o5:,6:p7:......
  • 【TPAMI-2024】EfficientTrain++帮你降低网络训练的成本
    写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!文章目录前言论文更容易学习的模式:频域易于学习的模式:空间域统一的训练课程EFFICIENTTRAIN++计算约束的顺序搜索高效低频下采样EfficientTrain++的实现技术实验......
  • vue3 实现自定义指令封装 --- 通俗易懂
    1、局部自定义指令1.1 在<scriptsetup>定义组件内的指令,任何以v开头的驼峰式命名的变量都可以被用作一个自定义指令<template><div><h3>使用自定义指令</h3><div>##########################start局部自定义指令</div><div>我是一个input:......
  • P5663 [CSP-J2019] 加工零件
    原题链接题解请仔细读题!!!如果1号工人需要提供原材料,那么代表\(a_i\to1\)存在一条长度为\(L_i\)的路径(可以重复走)由于重复走不会改变路径长度的奇偶性,所以一定存在一条奇偶性相同,且长度小于\(L_i\)的路径,所以只要求从点1出发到各个点奇偶最短路即可code#include<bits/......
  • QNX-19—QNX绑核优先级-1-理论
    一、Threadaffinity翻译翻译:QNXSoftwareDevelopmentPlatform-->Programming-->Programmer'sGuide-->MulticoreProcessing-->Theimpactofmulticorehttps://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.prog/topic/multico......
  • 基于mac-vlan的网络准入控制方案
    网络拓扑图如下:SW1配置vlan1020304000#创建vlaninterfaceGigabitEthernet1/0/1#进入接口portlink-typehybrid#接口模式设为hybridporthybridvlan1020304000untagged#vlan1020304000数据包没有tagporthybridpvidvla......