首页 > 其他分享 >PyQT5之QPushButton和布局

PyQT5之QPushButton和布局

时间:2024-06-04 15:57:06浏览次数:22  
标签:btn image 布局 PyQT5 label QPushButton addWidget QtWidgets click


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


def click_btn1():
    print("click button 1")
    txt_label.setText("我是按钮1点击之后")


def click_btn2():
    print("click button 2")


def click_btn3():
    print("click button 3")


if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    main_win = QtWidgets.QMainWindow()
    main_win.setWindowTitle("按钮组件 演示")
    btn1 = QtWidgets.QPushButton("按钮1")
    btn2 = QtWidgets.QPushButton("按钮2")
    btn3 = QtWidgets.QPushButton("按钮3")
    btn1.clicked.connect(click_btn1)
    btn2.clicked.connect(click_btn2)
    btn3.clicked.connect(click_btn3)

    image_label = QtWidgets.QLabel()
    txt_label = QtWidgets.QLabel()

    # 方法一:使用QtGui直接显示
    # pixmap = QtGui.QPixmap("./image/img1.png")
    # pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式

    # 方法二:使用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)  # 自动保持比例放缩方式
    image_label.setPixmap(pix)   # 设置图像显示
    image_label.setAlignment(QtCore.Qt.AlignCenter)   # label上的内容居中显示
    image_label.setStyleSheet("background-color:blue;color:green")    # 背景颜色设置
    # main_win.setCentralWidget(image_label)

    txt_label.setText("Hello, PyQT5")
    txt_label.setAlignment(QtCore.Qt.AlignCenter)   # label上居中显示
    txt_label.setStyleSheet("background-color:pink;color:green")    # 背景颜色设置
    font = QtGui.QFont()
    font.setBold(True)
    font.setPointSizeF(32)
    txt_label.setFont(font)

    label3 = QtWidgets.QLabel()
    label3.setText("你好, OpenCV")
    label3.setStyleSheet("background-color:gray;color:red")  # 背景颜色设置

    panel2 = QtWidgets.QWidget()
    hvoxlayout = QtWidgets.QVBoxLayout()
    hvoxlayout.addWidget(txt_label)
    hvoxlayout.addWidget(label3)
    panel2.setLayout(hvoxlayout)

    btn_panel = QtWidgets.QWidget()
    btn_layout = QtWidgets.QHBoxLayout()
    btn_layout.addWidget(btn1)
    btn_layout.addWidget(btn2)
    btn_layout.addWidget(btn3)
    btn_panel.setLayout(btn_layout)

    panel1 = QtWidgets.QWidget()
    hhoxlayout = QtWidgets.QHBoxLayout()
    hhoxlayout.addWidget(panel2)
    hhoxlayout.addWidget(image_label)
    hhoxlayout.addWidget(btn_panel)
    panel1.setLayout(hhoxlayout)

    main_win.setCentralWidget(panel1)
    main_win.setMinimumSize(1080, 720)
    main_win.show()
    app.exec_()

标签:btn,image,布局,PyQT5,label,QPushButton,addWidget,QtWidgets,click
From: https://www.cnblogs.com/jackchen28/p/18230976

相关文章

  • 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图像显示演示"......
  • Python---PyQT5之QPushButton
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysimportcv2classButtonPanel(QtWidgets.QWidget):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)select_btn=QtWidgets.QPushButton("......
  • PyQT5之label
    fromPyQt5importQtWidgetsfromPyQt5importQtCore,QtGuiimportsysif__name__=='__main__':app=QtWidgets.QApplication(sys.argv)main_win=QtWidgets.QMainWindow()main_win.setWindowTitle("我的第一个PyQT5应用")labe......
  • css网格布局
    CSS网格布局网格是一组相交的水平线和垂直线,它定义了网格的列和行。CSS提供了一个基于网格的布局系统,带有行和列,可以让我们更轻松地设计网页,而无需使用浮动和定位。以下是一个简单的网页布局,使用了网格布局,包含六列和三行:  »浏览器支持目前最新的一些浏览器版本......
  • 布局俄罗斯电商独立站正当时/附独立站收款
    大家都知道,俄罗斯是一个幅员辽阔的国家,国土跨越两个大陆,即欧洲和亚洲,横跨11个时区,与14个国家接壤,总人口为1.46亿人(俄乌战争后,可能没这么多了),是世界上人口最多的国家之一。俄罗斯总人口中有1.31亿人使用互联网,互联网普及率高达90%,普及率非常高!2023年俄罗斯GDP总额为2.24.万亿......
  • JavaFX 常见布局组件的使用
    Laytout简介JavaFX提供了多种布局管理器(LayoutManagers),它们用于自动管理用户界面组件的位置和大小。布局管理器可以简化UI设计,因为它们会根据窗口的大小变化自动调整其中的组件。布局组件JavaFX包含以下布局组件:布局名称中文说明AnchorPane锚点布局允许开发......
  • 实战整体布局学习上
    1.```htmlindex1headermainfooter```2.```htmlindex1-页眉与页脚<!--中:搜索框--><divclass="search"><divclass="logo">JD</div><divclass="zoomiconfonticon-x......
  • CSS当中 grid响应式布局!
    b站当中,那种布局方式,采用的就是grid的布局方式,如图:上代码吧,今天有点不舒服,就不叭叭了,<template><div><h3>grid布局</h3><hr><divclass="container"><divclass="box1box">index</div><divc......
  • Android基础-UI布局
    在Android开发中,UI布局是构建用户界面(UserInterface)的基础。不同的布局方式可以适应不同的界面需求,实现多样化的界面效果。下面将详细阐述Android中几种常见的UI布局方式,包括它们的功能、优势和劣势,以便开发者在选择布局方式时能够做出更明智的决策。1.LinearLayout(线性布局......