I can't find a way for handleMessage() to display list objects from a new line with adding them to QLabel or QLineEdit.
This is my first topic here, I immediately apologize if I framed it wrong
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1500,200)
MainWindow.setStyleSheet("background-color: #282828")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.search = QtWidgets.QLineEdit(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(32)
self.search.setFont(font)
self.search.setToolTipDuration(-3)
self.search.setStyleSheet("background-color: #161a1e; color: white; border: 3px solid #161a1e")
self.search.setObjectName("search")
self.gridLayout.addWidget(self.search, 0, 0, 1, 4)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(32)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("background-color: #161a1e; color: white;")
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 0, 4, 1, 1)
self.line_1 = QtWidgets.QFrame(self.centralwidget)
self.line_1.setStyleSheet("")
self.line_1.setObjectName("line_1")
self.line_1.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_1.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.gridLayout.addWidget(self.line_1, 1, 0, 1, 5)
self.marketLabel_1 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.marketLabel_1.setFont(font)
self.marketLabel_1.setStyleSheet("color: white")
self.marketLabel_1.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.marketLabel_1.setFixedHeight(40)
self.marketLabel_1.setObjectName("marketLabel_1")
self.gridLayout.addWidget(self.marketLabel_1, 2, 0, 1, 1)
self.marketLabel_2 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.marketLabel_2.setFont(font)
self.marketLabel_2.setStyleSheet("color: white")
self.marketLabel_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.marketLabel_2.setFixedHeight(40)
self.marketLabel_2.setObjectName("marketLabel_2")
self.gridLayout.addWidget(self.marketLabel_2, 2, 1, 1, 1)
self.marketLabel_3 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.marketLabel_3.setFont(font)
self.marketLabel_3.setStyleSheet("color: white")
self.marketLabel_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.marketLabel_3.setFixedHeight(40)
self.marketLabel_3.setObjectName("marketLabel_3")
self.gridLayout.addWidget(self.marketLabel_3, 2, 2, 1, 1)
self.marketLabel_4 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.marketLabel_4.setFont(font)
self.marketLabel_4.setStyleSheet("color: white")
self.marketLabel_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.marketLabel_4.setFixedHeight(40)
self.marketLabel_4.setObjectName("marketLabel_4")
self.gridLayout.addWidget(self.marketLabel_4, 2, 3, 1, 1)
self.line_2 = QtWidgets.QFrame(self.centralwidget)
self.line_2.setStyleSheet("")
self.line_2.setObjectName("line_2")
self.line_2.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.gridLayout.addWidget(self.line_2, 3, 0, 1, 5)
self.tradingPairs = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.tradingPairs.setFont(font)
self.tradingPairs.setStyleSheet("color: white;")
self.tradingPairs.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.tradingPairs.setFixedHeight(40)
self.tradingPairs.setObjectName("tradingPairs")
self.gridLayout.addWidget(self.tradingPairs, 4, 0, 1, 1)
self.lastTradedPrice = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.lastTradedPrice.setFont(font)
self.lastTradedPrice.setStyleSheet("color: white;")
self.lastTradedPrice.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.lastTradedPrice.setObjectName("lastTradedPrice")
self.gridLayout.addWidget(self.lastTradedPrice, 4, 1, 1, 1)
self.percentageChange = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.percentageChange.setFont(font)
self.percentageChange.setStyleSheet("color: white;")
self.percentageChange.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.percentageChange.setObjectName("percentageChange")
self.gridLayout.addWidget(self.percentageChange, 4, 2, 1, 1)
self.turnover = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.turnover.setFont(font)
self.turnover.setStyleSheet("color: white;")
self.turnover.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.turnover.setObjectName("turnover")
self.gridLayout.addWidget(self.turnover, 4, 3, 1, 1)
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setStyleSheet("")
self.line_3.setObjectName("line_3")
self.line_3.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.gridLayout.addWidget(self.line_3, 1000, 0, 1, 4)
self.notificationsLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.notificationsLabel.setFont(font)
self.notificationsLabel.setToolTipDuration(-3)
self.notificationsLabel.setStyleSheet("color: white")
self.notificationsLabel.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.notificationsLabel.setObjectName("notificationsLabel")
self.gridLayout.addWidget(self.notificationsLabel, 1001, 0, 1, 5)
self.line_4 = QtWidgets.QFrame(self.centralwidget)
self.line_4.setStyleSheet("")
self.line_4.setObjectName("line_5")
self.line_4.setFrameShape(QtWidgets.QFrame.Shape.HLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.gridLayout.addWidget(self.line_4, 1002, 0, 1,5)
self.notificationsLabel_1 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.notificationsLabel_1.setFont(font)
self.notificationsLabel_1.setToolTipDuration(-3)
self.notificationsLabel_1.setStyleSheet("color: white")
self.notificationsLabel_1.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.notificationsLabel_1.setObjectName("notificationsLabel")
self.gridLayout.addWidget(self.notificationsLabel_1, 1002, 0, 1, 1)
self.notificationsLabel_2 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.notificationsLabel_2.setFont(font)
self.notificationsLabel_2.setToolTipDuration(-3)
self.notificationsLabel_2.setStyleSheet("color: white")
self.notificationsLabel_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.notificationsLabel_2.setObjectName("notificationsLabel")
self.gridLayout.addWidget(self.notificationsLabel_2, 1002, 1, 1, 1)
self.notificationsLabel_3 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.notificationsLabel_3.setFont(font)
self.notificationsLabel_3.setToolTipDuration(-3)
self.notificationsLabel_3.setStyleSheet("color: white")
self.notificationsLabel_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.notificationsLabel_3.setObjectName("notificationsLabel")
self.gridLayout.addWidget(self.notificationsLabel_3, 1002, 2, 1, 1)
self.notificationsLabel_4 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(24)
self.notificationsLabel_4.setFont(font)
self.notificationsLabel_4.setToolTipDuration(-3)
self.notificationsLabel_4.setStyleSheet("color: white")
self.notificationsLabel_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.notificationsLabel_4.setObjectName("notificationsLabel")
self.gridLayout.addWidget(self.notificationsLabel_4, 1002, 3, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "найти"))
self.marketLabel_1.setText(_translate("MainWindow", "Торговая пара"))
self.marketLabel_2.setText(_translate("MainWindow", "Цена"))
self.marketLabel_3.setText(_translate("MainWindow", "Изменения, %"))
self.marketLabel_4.setText(_translate("MainWindow", "Объемы"))
self.notificationsLabel.setText(_translate("MainWindow", "Уведомления"))
self.notificationsLabel_1.setText(_translate("MainWindow", "Торговая пара"))
self.notificationsLabel_2.setText(_translate("MainWindow", "Цена"))
self.notificationsLabel_3.setText(_translate("MainWindow", "Изменения, %"))
self.notificationsLabel_4.setText(_translate("MainWindow", "Дата и время"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec())
import sys
import time
from datetime import datetime
from plyer import notification
from pybit import usdt_perpetual
from PyQt6 import QtCore, QtGui, QtWidgets
from programWindow import Ui_MainWindow
class HandleMessage(QtWidgets.QMainWindow):
def __init__(self, *args, **kwds):
super(HandleMessage, self).__init__()
self.programWindow = Ui_MainWindow()
self.programWindow.setupUi(self)
self.display()
self.connect()
self.addNewLine()
def display(self):
self.programWindow.search.setPlaceholderText('Пример: btc, eth, doge')
self.programWindow.pushButton.clicked.connect(self.addNewLine)
def connect(self):
symbol_list = ["BTCUSDT", "DOGEUSDT"]
ws_linear = usdt_perpetual.WebSocket(
test=False,
ping_interval=3000,
ping_timeout=2000,
domain="bybit"
)
ws_linear.kline_stream(
callback=self.handleMessage,
symbol=symbol_list,
interval="1"
)
def handleMessage(self, message):
data = message['data'][0]
open = data["open"]
symbol = message["topic"][9:]
close = data['close']
turnover = '{0:,}'.format(int(float(data['turnover']))).replace(',', '.')
priceChange = round((close/open-1)*100, 2)
self.programWindow.lastTradedPrice.setText(str(close))
self.programWindow.tradingPairs.setText(symbol)
self.programWindow.percentageChange.setText(str(priceChange))
self.programWindow.turnover.setText(str(turnover))
if close > open:
self.programWindow.lastTradedPrice.setStyleSheet("color: yellow;\nborder: 0")
self.programWindow.percentageChange.setStyleSheet("color: yellow;\nborder: 0")
elif close < open:
self.programWindow.lastTradedPrice.setStyleSheet("color: red;\nborder: 0")
self.programWindow.percentageChange.setStyleSheet("color: red;\nborder: 0")
else:
self.programWindow.lastTradedPrice.setStyleSheet("color: white;\nborder: 0")
self.programWindow.percentageChange.setStyleSheet("color: white;\nborder: 0")
def addNewLine(self):
self.tradingPairs = QtWidgets.QLineEdit(self.programWindow.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.tradingPairs.setFont(font)
self.tradingPairs.setStyleSheet("color: white;")
self.tradingPairs.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.tradingPairs.setFixedHeight(40)
self.tradingPairs.setObjectName("tradingPairs")
self.lastTradedPrice = QtWidgets.QLineEdit(self.programWindow.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.lastTradedPrice.setFont(font)
self.lastTradedPrice.setStyleSheet("color: white;")
self.lastTradedPrice.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.lastTradedPrice.setObjectName("lastTradedPrice")
self.percentageChange = QtWidgets.QLineEdit(self.programWindow.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.percentageChange.setFont(font)
self.percentageChange.setStyleSheet("color: white;")
self.percentageChange.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.percentageChange.setObjectName("percentageChange")
self.turnover = QtWidgets.QLineEdit(self.programWindow.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(26)
self.turnover.setFont(font)
self.turnover.setStyleSheet("color: white;")
self.turnover.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
self.turnover.setObjectName("turnover")
row = self.programWindow.gridLayout.count()-12
self.programWindow.gridLayout.addWidget(self.tradingPairs, row, 0, 1, 1)
self.programWindow.gridLayout.addWidget(self.lastTradedPrice, row, 1, 1, 1)
self.programWindow.gridLayout.addWidget(self.percentageChange, row, 2, 1, 1)
self.programWindow.gridLayout.addWidget(self.turnover, row, 3, 1, 1)
app = QtWidgets.QApplication([])
application = HandleMessage()
application.show()
sys.exit(app.exec())
I want the data from symbol_list to be dynamically added to QLabel or QLineEdit from a new line.
def connect(self):
symbol_list = ["BTCUSDT", "DOGEUSDT"]
ws_linear = usdt_perpetual.WebSocket(
test=False,
ping_interval=3000,
ping_timeout=2000,
domain="bybit"
)
ws_linear.kline_stream(
callback=self.handleMessage,
symbol=symbol_list,
interval="1"
)
I tried through cycles, but no matter how hard I tried, it turns out:
I expect the output to be like this: I expect