PyQtGraph – 条形图的可见性变化信号
在本文中,我们将看到如何在 PyQtGraph 模块中获取条形图的可见性变化信号。 PyQtGraph 是一个用于Python的图形和用户界面库,它提供了设计和科学应用程序中通常需要的功能。它的主要目标是提供用于显示数据(绘图、视频等)的快速交互式图形,其次是提供帮助快速应用程序开发的工具(例如,Qt Designer 中使用的属性树)。条形图或条形图是一种图表或图形,它用矩形条显示分类数据,矩形条的高度或长度与其所代表的值成正比。条形可以垂直或水平绘制。垂直条形图有时也称为柱形图。可见性可以通过使用隐藏和显示方法来改变,当它的可见属性改变时会发出这个信号。
我们可以在下面给出的命令的帮助下创建一个绘图窗口和条形图
# creating a pyqtgraph plot window
window = pg.plot()
# creating a bar graph of green color
bargraph = pg.BarGraphItem(x=x, height=y1, width=0.6, brush='g')
In order to do this we use visibleChanged.connect
method with the bar graph object
Syntax : bargraph.visibleChanged.connect(method)
Argument : It takes method as argument
Return : It returns None
下面是实现
# importing Qt widgets
from PyQt5.QtWidgets import * import sys
# importing pyqtgraph as pg
import pyqtgraph as pg
from PyQt5.QtGui import *
# Bar Graph class
class BarGraphItem(pg.BarGraphItem):
# constructor which inherit original
# BarGraphItem
def __init__(self, *args, **kwargs):
pg.BarGraphItem.__init__(self, *args, **kwargs)
# creating a mouse double click event
def mouseDoubleClickEvent(self, e):
# hiding the bar graph
self.hide()
class Window(QMainWindow):
def __init__(self):
super().__init__()
# setting title
self.setWindowTitle("PyQtGraph")
# setting geometry
self.setGeometry(100, 100, 600, 500)
# icon
icon = QIcon("skin.png")
# setting icon to the window
self.setWindowIcon(icon)
# calling method
self.UiComponents()
# showing all the widgets
self.show()
# method for components
def UiComponents(self):
# creating a widget object
widget = QWidget()
# creating a label
label = QLabel("Geeksforgeeks")
# creating a plot window
plot = pg.plot()
# create list for y-axis
y1 = [5, 5, 7, 10, 3, 8, 9, 1, 6, 2]
# create horizontal list i.e x-axis
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# create pyqt5graph bar graph item
# with width = 0.6
# with bar colors = green
bargraph = BarGraphItem(x = x, height = y1, width = 0.6, brush ='g')
# add item to plot window
# adding bargraph item to the plot window
plot.addItem(bargraph)
# Creating a grid layout
layout = QGridLayout()
# setting this layout to the widget
widget.setLayout(layout)
# adding label in the layout
layout.addWidget(label, 1, 0)
# plot window goes on right side, spanning 3 rows
layout.addWidget(plot, 0, 1, 3, 1)
# setting this widget as central widget of the main widow
self.setCentralWidget(widget)
# signal emitted when visibility is changed
bargraph.visibleChanged.connect(lambda: do_action())
# do action method called by bar graph
def do_action():
# setting text to the label
label.setText("Visibility of bar graph is Changed")
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Window()
# start the app
sys.exit(App.exec())
输出 :