Python Forum
[PyQt] Connecting progress bars to sensors
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] Connecting progress bars to sensors
#1
Photo 
Hi, I'm trying to make a whole GUI to control a robot, but I'm having real trouble with connecting the 5 sensors from the robot to the progress bars in the code. I can't find anything online. I know the code isn't perfect in any way, but until now, everything had worked. The application managed to connect to the robot, get data back from the robot, the battery was displayed. Leds don't work like they are supposed to and the engines of the wheels dont start correctly, but those things aren't that complicated ( i think ).
However the sensors mess up the WHOLE thing.
Is there any way to do it?


My code:

from PyQt5 import QtCore, QtGui, QtWidgets
import socket
import time
global s


class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.columnView = QtWidgets.QColumnView(self.centralwidget)
        self.columnView.setGeometry(QtCore.QRect(20, 10, 751, 501))
        self.columnView.setObjectName("columnView")

        self.polacz = QtWidgets.QPushButton(self.centralwidget)
        self.polacz.setGeometry(QtCore.QRect(40, 60, 93, 28))
        self.polacz.setObjectName("polacz")
        self.polacz.clicked.connect(self.clickpolacz)

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 30, 81, 16))
        self.label.setObjectName("label")
        self.adres = QtWidgets.QTextEdit(self.centralwidget)
        self.adres.setGeometry(QtCore.QRect(120, 20, 111, 31))
        self.adres.setObjectName("adres")

        self.lewySilnik = QtWidgets.QSlider(self.centralwidget)
        self.lewySilnik.setGeometry(QtCore.QRect(170, 380, 491, 31))
        self.lewySilnik.setMinimumSize(QtCore.QSize(491, 0))
        self.lewySilnik.setOrientation(QtCore.Qt.Horizontal)
        self.lewySilnik.setObjectName("lewySilnik") #left engine
        self.lewySilnik.valueChanged.connect(self.slide_it)
        self.lewySilnik.setMinimum(-127)
        self.lewySilnik.setMaximum(128)
        self.val = 0

        self.prawySilnik = QtWidgets.QSlider(self.centralwidget)
        self.prawySilnik.setGeometry(QtCore.QRect(170, 440, 491, 31))
        self.prawySilnik.setOrientation(QtCore.Qt.Horizontal)
        self.prawySilnik.setObjectName("prawySilnik") # right engine
        self.prawySilnik.setMinimum(-127)
        self.prawySilnik.setMaximum(128)
        self.prawySilnik.valueChanged.connect(self.slide_it1)
        self.val1 = 0

        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(70, 380, 121, 31))
        self.label_2.setObjectName("label_2")

        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(70, 450, 81, 21))
        self.label_3.setObjectName("label_3")

        self.rozlacz = QtWidgets.QPushButton(self.centralwidget)
        self.rozlacz.setGeometry(QtCore.QRect(140, 60, 93, 28))
        self.rozlacz.setObjectName("rozlacz")
        self.rozlacz.clicked.connect(self.clickrozlacz)

        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(310, 20, 81, 31))
        self.label_4.setObjectName("label_4")

        self.bateria = QtWidgets.QTextBrowser(self.centralwidget)
        self.bateria.setGeometry(QtCore.QRect(290, 50, 121, 31))
        self.bateria.setObjectName("bateria")
        #self.bateria.setText(self.infobateria)


        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(520, 20, 141, 31))
        self.label_5.setObjectName("label_5")

        self.odebrana = QtWidgets.QTextBrowser(self.centralwidget)
        self.odebrana.setGeometry(QtCore.QRect(460, 50, 261, 31))
        self.odebrana.setObjectName("odebrana")  # message back



        self.sensor1 = QtWidgets.QProgressBar(self.centralwidget)
        self.sensor1.setGeometry(QtCore.QRect(30, 210, 118, 23))
        self.sensor1.setProperty("value", 0)
        self.sensor1.setMinimum(0)
        self.sensor1.setMaximum(2000)
        self.sensor1.setObjectName("sensor1")
        self.sensor1.

    def signal_accept(self, msg):
        self.pbar.setValue(int(msg))

        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(20, 100, 751, 20))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")

        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(330, 120, 71, 21))
        self.label_6.setObjectName("label_6")

        self.sensor2 = QtWidgets.QProgressBar(self.centralwidget)
        self.sensor2.setGeometry(QtCore.QRect(160, 210, 118, 23))
        self.sensor2.setProperty("value", 24)
        self.sensor2.setMinimum(0)
        self.sensor2.setMaximum(2000)
        self.sensor2.setObjectName("sensor2")
        self.sensor2.value(0)

        self.sensor3 = QtWidgets.QProgressBar(self.centralwidget)
        self.sensor3.setGeometry(QtCore.QRect(300, 210, 118, 23))
        self.sensor3.setProperty("value", 24)
        self.sensor3.setMinimum(0)
        self.sensor3.setMaximum(2000)
        self.sensor3.setObjectName("sensor3")
        self.sensor3.value(0)

        self.sensor4 = QtWidgets.QProgressBar(self.centralwidget)
        self.sensor4.setGeometry(QtCore.QRect(450, 210, 118, 23))
        self.sensor4.setProperty("value", 24)
        self.sensor4.setMinimum(0)
        self.sensor4.setMaximum(2000)
        self.sensor4.setObjectName("sensor4")
        self.sensor4.value(0)

        self.sensor5 = QtWidgets.QProgressBar(self.centralwidget)
        self.sensor5.setGeometry(QtCore.QRect(610, 210, 118, 23))
        self.sensor5.setProperty("value", 24)
        self.sensor5.setMinimum(0)
        self.sensor5.setMaximum(2000)
        self.sensor5.setObjectName("sensor5")
        self.sensor5.value(0)

        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(60, 320, 161, 21))
        self.label_7.setObjectName("label_7")

        self.wyslana = QtWidgets.QTextBrowser(self.centralwidget)
        self.wyslana.setGeometry(QtCore.QRect(230, 320, 201, 31))
        self.wyslana.setObjectName("wyslana") # sent message

        self.led1 = QtWidgets.QCheckBox(self.centralwidget)
        self.led1.setGeometry(QtCore.QRect(480, 320, 121, 31))
        self.led1.setObjectName("led1")
        self.led1.stateChanged.connect(self.led1val)
        self.led1stan = 0

        self.led2 = QtWidgets.QCheckBox(self.centralwidget)
        self.led2.setGeometry(QtCore.QRect(570, 320, 121, 31))
        self.led2.setObjectName("led2")
        self.led2.stateChanged.connect(self.led2val)
        self.led2stan = 0

        self.reset = QtWidgets.QPushButton(self.centralwidget)
        self.reset.setGeometry(QtCore.QRect(650, 320, 93, 28))
        self.reset.setObjectName("reset")
        self.reset.clicked.connect(self.restart)

        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(50, 180, 71, 21))
        self.label_8.setObjectName("label_8")

        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(170, 180, 71, 21))
        self.label_9.setObjectName("label_9")

        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(300, 180, 71, 21))
        self.label_10.setObjectName("label_10")

        self.label_11 = QtWidgets.QLabel(self.centralwidget)
        self.label_11.setGeometry(QtCore.QRect(460, 180, 71, 21))
        self.label_11.setObjectName("label_11")

        self.label_12 = QtWidgets.QLabel(self.centralwidget)
        self.label_12.setGeometry(QtCore.QRect(620, 180, 71, 21))
        self.label_12.setObjectName("label_12")

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 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 slide_it(self, value):

        self.sum_slide_it(0, value)

    def slide_it1(self, value1):
        self.sum_slide_it(1, value1)

    def led1val(self, value2):
        if self.led1.isChecked():
            self.sum_slide_it(2, value2-1)
        else:
            self.sum_slide_it(2, value2)

    def led2val(self, value3):
        if self.led2.isChecked():
            self.sum_slide_it(3, value3 - 1)
        else:
            self.sum_slide_it(3, value3)

    def sum_slide_it(self, id, value):
        global s
        if id == 0:
            self.val = hex(value)
        if id == 1:
            self.val1 = hex(value)
        if id == 2:
            self.led1stan = (value)
        if id == 3:
            self.led2stan = (value)
        if id>-1 or id <4:

           self.send=('[' + str(self.led1stan) + str(self.led2stan) + str(self.val)[2:4] + str(self.val1)[2:4] + ']')
           self.wyslana.setText(self.send)
           s.send(str.encode(str(self.send)))
           BUFFER_SIZE = 1024
           self.data = s.recv(BUFFER_SIZE)
           self.odebrana.setText(str(self.data))
        # BATERIE
           self.bateryjka = int(self.data[2:6],16)
           self.bateria.setText(str(self.bateryjka))

           BUFFER_SIZE = 1024
           self.data = s.recv(BUFFER_SIZE)
    def s1(self,value):
           self.s1 = int(self.data[6:10])
           self.sensor1.setValue(self.s1)

    '''
           self.s2 = int(self.data[10:14])
           self.sensor2.setValue(self.s2)

           self.s3 = int(self.data[14:18])
           self.sensor3.setValue(self.s3)

           self.s4 = int(self.data[18:22])
           self.sensor4.setValue(self.s4)

           self.s5 = int(self.data[22:])
           self.sensor5.setValue(self.s5)
    '''
    def restart(self):
        self.send=('[000000]')
        s.send(str.encode(str(self.send)))
        self.wyslana.setText(self.send)
        self.prawySilnik.setValue(0)
        self.lewySilnik.setValue(0)

    #def infobateria(self):



    def clickpolacz(self):

        TCP_IP = self.adres.toPlainText()
        TCP_PORT = 8000
        s.connect((TCP_IP, TCP_PORT))

    def clickrozlacz(self):
        s.close()

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.polacz.setText(_translate("MainWindow", "Połącz"))
        self.label.setText(_translate("MainWindow", "Adres robota"))
        self.label_2.setText(_translate("MainWindow", "Lewy Silnik"))
        self.label_3.setText(_translate("MainWindow", "Prawy Silnik"))
        self.rozlacz.setText(_translate("MainWindow", "Rozłącz"))
        self.label_4.setText(_translate("MainWindow", "Stan baterii"))
        self.label_5.setText(_translate("MainWindow", "Odebrana wiadomość "))
        self.label_6.setText(_translate("MainWindow", "Sensory"))
        self.label_7.setText(_translate("MainWindow", "Wysłana wiadomość"))
        self.led1.setText(_translate("MainWindow", "Led 1"))
        self.led2.setText(_translate("MainWindow", "Led 2"))
        self.reset.setText(_translate("MainWindow", "Reset"))
        self.label_8.setText(_translate("MainWindow", "Sensor 1"))
        self.label_9.setText(_translate("MainWindow", "Sensor 2"))
        self.label_10.setText(_translate("MainWindow", "Sensor 3"))
        self.label_11.setText(_translate("MainWindow", "Sensor 4"))
        self.label_12.setText(_translate("MainWindow", "Sensor 5"))


if __name__ == "__main__":
    import sys
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()


    sys.exit(app.exec_())
And the sensors part in data ( they are 1 to 5):
Larz60+ write May-28-2022, 10:39 AM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
As mentioned in next post by Axel_Erfurt. I have fixed it for you this time. Please use BBCode tags on future posts.

Attached Files

Thumbnail(s)
   

.py   main.py (Size: 11.44 KB / Downloads: 133)
Reply
#2
Post your code in python tags.

You never get a window with this code.

It was made with QtDesigner? Convert it to py with

pyuic5 -x file.ui -o file.py

or import the ui file in PyQt5

https://nitratine.net/blog/post/how-to-i...ython-gui/


If you want to learn, don't use QtDesigner, it produces unnecessary code.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Help with scroll bars kraco 1 2,256 Sep-27-2020, 11:20 PM
Last Post: Larz60+
  How can I measure progress and display it in the progress bar in the interface? Matgaret 2 5,959 Dec-11-2019, 03:30 PM
Last Post: Denni
  [Tkinter] Progress Bar While Sending an Email maxtimbo 3 4,125 Oct-09-2019, 09:13 PM
Last Post: woooee
  Progress Bar While Sending an Email maxtimbo 0 2,134 Oct-08-2019, 02:13 PM
Last Post: maxtimbo
  Require scroll bars horizontal and vertical throughout the window tejgandhi 2 2,722 Jun-28-2019, 03:13 AM
Last Post: tejgandhi
  [Tkinter] Scroll Bars going backwards goofygoo 2 2,723 Jun-07-2019, 05:07 PM
Last Post: goofygoo
  GUI Progress Bar Anysja 6 6,642 Aug-29-2018, 02:34 PM
Last Post: swetanjali
  [PyQt] cant import progress bar from another py file swipis 7 8,660 Dec-18-2016, 10:41 AM
Last Post: swipis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020