多个widget重叠覆盖pyqtgraph的viewbox的实现

 UI文件转换为python代码(UI界面代码):

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets
import pyqtgraph as pg

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(937, 751)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.graphicsView = pg.GraphicsView(self.centralwidget)
        self.graphicsView.setObjectName("graphicsView")
        self.gridLayout.addWidget(self.graphicsView, 0, 0, 1, 1)
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(260, 130, 256, 192))
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(0)
        self.tableWidget.setRowCount(0)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 937, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

实现代码:

import sys
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow, QApplication

from untitled import Ui_MainWindow


class xx(QMainWindow,Ui_MainWindow):
    def __init__(self):
        super(xx,self).__init__()
        self.setupUi(self)
        self.graphicsView.setStyleSheet('QGraphicsView {background-color:blue;}')
        self.tableWidget.setStyleSheet('QTableWidget {background-color:red;}')

        self.tableWidget.move(500,500)
        # self.tableWidget.setWindowFlags(Qt.WindowStaysOnBottomHint)

        self.Widget1 = QtWidgets.QWidget(self.centralwidget)
        self.Widget1.setGeometry(QtCore.QRect(260, 130, 256, 192))
        self.Widget1.setObjectName("Widget1")
        self.Widget1.setStyleSheet('QWidget#Widget1 {background-color:yellow;}')

        # self.graphicsView.raise_()    # 置顶
        # self.Widget1.raise_()
        # self.tableWidget.raise_()


        vb = pg.ViewBox(invertY=True)
        vb.setFixedHeight(800)
        vb.setFixedWidth(800)
        # p1 = pg.PlotDataItem()
        # vb.addItem(p1)
        # TODO PlotItem 最小刻度,背景颜色,边框,位置未解决  ***大小,题目,轴标签,轴隐藏/显示,界限线
        plot = pg.PlotItem(title='111', labels={'left': 'y', 'bottom': 'x'})
        # plot.setXRange(0,6)
        # plot.setYRange(0,8)
        plot.setDefaultPadding(padding=0.5)
        plot.setLabel(axis='left', text='<html style="font-family:arial;color:red;font-size:10px;">Y</html>',
                      units='v')  # 设置坐标轴的标签,text:允许使用*HTML*
        plot.hideButtons()  # 隐藏左下角A按钮
        # plot.hideAxis('left')  # 隐藏坐标轴(‘left’, ‘bottom’, ‘right’, or ‘top’)
        plot.showButtons()  # 显示左下角A按钮
        plot.addLine(x=1, pen='r')  # 绘制一条直线
        plot.addLine(y=1, pen='b')  # 绘制一条直线
        plot.addLine(y=2, pen='b')  # 绘制一条直线
        plot.showGrid(x=True, y=True, alpha=0)  # 显示网格线(X/Y),alpha:网格线的不透明度:(0.0-1.0)
        plot.showAxes(selection=(True, False, False, True), showValues=True)  # size:(width, height)
        vb.addItem(plot)

        self.graphicsView.addItem(vb)

        # l.addItem(vb, 0, 1)
        # self.graphicsView.centralWidget.setLayout(l)




if __name__ == '__main__':
    app = QApplication(sys.argv)
    x = xx()
    x.show()
    sys.exit(app.exec())

界面中插入一个widget控件:

self.Widget1 = QtWidgets.QWidget(self.centralwidget)
        self.Widget1.setGeometry(QtCore.QRect(260, 130, 256, 192))
        self.Widget1.setObjectName("Widget1")
        self.Widget1.setStyleSheet('QWidget#Widget1 {background-color:yellow;}')

通过将self.Widget1置顶进行覆盖viewbox:

self.Widget1.raise_()

实现效果:

 self.Widget1置顶覆盖在viewbox之上。

多窗口置顶/置地:

self.tableWidget.setWindowFlags(Qt.WindowStaysOnBottomHint)    #置地
self.tableWidget.setWindowFlags(Qt.WindowStaysOnTopHint)    # 置顶

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值