【发布时间】:2021-10-03 07:46:47
【问题描述】:
如何将 SymbolPlotter 中的按钮点击信号发送到 MainWindow 的状态栏并附加新消息?
所以基本上当我单击模块符号绘图仪中的按钮时,我想在主状态栏中显示一个文本。类 MainWindow 中的 Py
main.py:
import sys
from PyQt5 import QtWidgets as qtw
import SymbolPlotter as sp
import Stylesheet as st
class MainWindow(qtw.QMainWindow):
def __init__(self, speed='1d1s'):
super().__init__()
# 1. create a tab widget in mainwindow
tabs = qtw.QTabWidget(tabShape='triangular')
tabs.setStyleSheet(st.TabBar)
self.setCentralWidget(tabs)
# create a status bar
status_bar = qtw.QStatusBar()
self.setStatusBar(status_bar)
status_bar.showMessage('Ready')
#1 tab to plot data in streaming fashion
SymbolPlotter = sp.SymbolPlotterClass(symbol)
tabs.addTab(SymbolPlotter, f'Online Plotter: {symbol}')
#3 tab to save/update downloaded data to database
DBStorage = dbs.DatabaseStorageClass()
tabs.addTab(DBStorage, 'Database Storage')
# End main UI code
self.show()
def UpdateStatusBarMessage(self, message='empty'):
self.status_bar.showMessage('message')
if __name__ == '__main__':
app = qtw.QApplication(sys.argv)
mw = MainWindow(symbol,speed='1d10ms')
mw.setWindowTitle('Test')
windows_style = qtw.QStyleFactory.create('Fusion')
app.setStyle(windows_style)
sys.exit(app.exec())
在 SymbolPlotter 中,发出信号
SymbolPlotter.py
import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc
from PyQt5 import QtChart as qtch
from main import MainWindow as mw
import Stylesheet as st
class SymbolPlotterClass(qtw.QWidget):
def __init__(self, symbol):
super().__init__()
# create buttons
button0 = qtw.QPushButton("Select Folder", self)
button0.setStyleSheet(st.b1)
#self.button0.clicked.connect(self.onPressed_btn0)
button0.clicked.connect(lambda: mw.UpdateStatusBarMessage('test message'))
# chart object and viewer
chart = qtch.QChart()
chartview = qtch.QChartView(chart)
# create vertical layout object for page
layout = qtw.QVBoxLayout()
self.setLayout(layout)
# add a horizontal sublayout
layout.addWidget(chartview)
sublayout = qtw.QHBoxLayout()
layout.addLayout(sublayout)
# add widgets to layout
sublayout.addWidget(button0)
# emit signal
def onPressed_btn0(self):
message = 'select folder pressed'
#mw.UpdateStatusBarMessage()
#self.submitted.emit()
if __name__ == '__main__':
pass
【问题讨论】:
标签: python pyqt5 signals-slots