0

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:

enter image description here

I expect the output to be like this: I expect

Mr.Framon
  • 21
  • 5

0 Answers0