首页 > 其他分享 >PyQT5之菜单栏和工具栏

PyQT5之菜单栏和工具栏

时间:2024-06-07 15:12:43浏览次数:8  
标签:main 工具栏 image QtWidgets PyQT5 label fileName 菜单栏 self


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)   # 设置图像显示


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


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


if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    main_win = QtWidgets.QMainWindow()
    main_win.setWindowTitle("图像浏览显示")

    # 添加菜单栏
    menu = main_win.menuBar()
    file_menu = menu.addMenu("&文件")
    image_action = QtWidgets.QAction("图像选择", main_win)
    image_action.setStatusTip("This is your image...")
    image_action.triggered.connect(on_select_image)
    file_menu.addAction(image_action)

    # 添加工具栏
    toolbar = QtWidgets.QToolBar("MyToolBar")
    main_win.addToolBar(toolbar)
    tool_action = QtWidgets.QAction("圆形", main_win)
    tool_action.setStatusTip("This is your button")
    tool_action.triggered.connect(on_tool_image)
    tool_action.setCheckable(True)
    toolbar.addAction(tool_action)

    myPanel = ButtonPanel()
    main_win.setCentralWidget(myPanel)
    main_win.setMinimumSize(1080, 720)
    main_win.show()
    app.exec_()

标签:main,工具栏,image,QtWidgets,PyQT5,label,fileName,菜单栏,self
From: https://www.cnblogs.com/jackchen28/p/18237233

相关文章

  • YOLOv8-PyQT5可视化界面
    使用PyQT5实现YOLOv8图形化界面准备工作:1、首先在YOLOv8环境中安装pyqt5pipinstallpyqt5pipinstallpyqt5-tools然后再你的anaconda环境中找到designer.exe文件,双击运行,可以将其发送到桌面快捷方式方便后续使用下面是我的文件所在路径地址,根据自己环境的位置进行查找。......
  • 使用jQuery实现鼠标移入展开导航的二级菜单栏
    1、首先写出html结构(举个例子)<divclass="nav"><ul><li><ahref="#">全国导航</a><ulclass="nav_meun"><li><ahref=&qu......
  • PyQt5打造高效的剪贴板管理器
    介绍:在数字化时代,有效地管理剪贴板中的复制内容对于提高生产力和简化使用至关重要。尽管剪贴板是现代计算的基本功能之一,但其默认功能通常缺乏高级管理选项。在本文中,我们将探讨如何利用PyQt5构建强大的剪贴板管理器,PyQt5是用于创建图形用户界面(GUI)的强大Python框架。通过......
  • PyQT5之QComboBox
    importos.pathfromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classSpinBoxPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)select_btn=QtWidgets.QP......
  • PyQT5之Checkbox
    """复选框"""importos.pathfromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**k......
  • PyQT5之网格布局多图片显示
    选择文件夹,显示图片importosfromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.image_files......
  • PyQT5之图片滚动
    图片滚动importosfromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.image_files=[]......
  • PyQT5之QPushButton和布局
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2defclick_btn1():print("clickbutton1")txt_label.setText("我是按钮1点击之后")defclick_btn2():print("clickbutton2")defclick_......
  • Python--PyQT5图像
    fromPyQt5importQtCore,QtGuiimportsysimportcv2if__name__=='__main__':app=QtWidgets.QApplication(sys.argv)main_win=QtWidgets.QMainWindow()main_win.setWindowTitle("QLabel图像显示演示")image_label=QtWidge......
  • Python---PyQT5水平垂直布局
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2if__name__=='__main__':app=QtWidgets.QApplication(sys.argv)main_win=QtWidgets.QMainWindow()main_win.setWindowTitle("QLabel图像显示演示"......