Új hozzászólás Aktív témák
-
Silεncε
őstag
Sziasztok!! Lenne egy program, amivel már napok óta nem bírok zöld ágra vergődni. A feladata az lenne, hogy kliensként szolgáljon egy másik projecthez. A másik oldalon egy Teensy van, ami ESP8826-on keresztül lök adatot nekünk wifin (TCP protokollal). A "kliens" feladata az lenne, hogy fogadja a TCP-n érkező adatot, majd ezt kirajzolja egy PyQtGraph vonalgrafikonra. Van is már egy működő verzió, de szeretnénk neki GUI-t is csinálni. Ugye erre a legkézenfekvőbb ebben az esetben a PyQt és ez működik is nagyjából. Azonban azt sehogyan sem tudom megoldani, hogy az érkező adatokat a grafikon real-time rajzolja ki, ebben kérném a segítségeteket. A kód többszálúsítva van, idáig eljutottam már, ezt QThread segítségével csináltam meg. Tudna nekem segíteni valaki, hogy mit rontok el? Nem konkrét megoldásra lenne szükségem, inkább iránymutatásra (tanulni szeretnék, nem készen megkapni a megoldást). Remélem van valaki, aki tud nekem segíteni, előre is köszönöm!!
import sys
import socket
from pyqtgraph import PlotWidget
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import QThread
IP = ""
PORT = 333
DATA = [] #ez az, ahova a tcp bepakolja az adatot, és innen is veszi ki a grafikon is; egyszerre használja a kettő
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(280, 248)
#MainWindow.setWindowIcon(QtGui.QIcon('wifi.png'))
self.connect_button = QtWidgets.QPushButton(MainWindow)
self.connect_button.setGeometry(QtCore.QRect(150, 10, 91, 23))
self.connect_button.setObjectName("connect_button")
self.IPinput = QtWidgets.QLineEdit(MainWindow)
self.IPinput.setGeometry(QtCore.QRect(10, 10, 131, 20))
self.IPinput.setObjectName("IPinput")
self.plotItem = PlotWidget(MainWindow)
self.plotItem.setGeometry(QtCore.QRect(10, 40, 256, 192))
self.plotItem.setObjectName("graphicsView")
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Client"))
self.connect_button.setText(_translate("MainWindow", "Connect to host"))
class programManager(QtWidgets.QWidget, Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.connect_button.clicked.connect(self.backgroundWorkerManager)
self.IPinput.textChanged[str].connect(self.onChangedIP)
def backgroundWorkerManager(self):
self.bgw = backgroundWorker()
self.bgw.start()
self.plotDraw = plotDraw()
self.plotDraw.start()
def onChangedIP(self, text):
global IP
IP = text
class plotDraw(QtCore.QThread):
def __init__(self):
pass
def __del__(self):
self.wait()
def run(self):
pass #ide akartam a grafikon frissítését beilleszteni, de nem működött
class backgroundWorker(QtCore.QThread):
def __init__(self):
QtCore.QThread.__init__(self)
def __del__(self):
self.wait()
def run(self):
print(IP)
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((IP, PORT))
MESSAGE = "HELLO I\'M CONNECTED"
self.sock.send(MESSAGE.encode())
while True:
DATA.append(int(self.sock.recv(2048)))
print(DATA)
self.sock.close()
def main():
app = QtWidgets.QApplication(sys.argv)
gui = programManager()
gui.show()
sys.exit(app.exec())
if __name__ == '__main__':
main() -
Silεncε
őstag
válasz concret_hp #2867 üzenetére
Tkinter, PyQt?
-
Silεncε
őstag
válasz concret_hp #2869 üzenetére
Én ezt a kettőt ismerem. a PyQt-t használtam ~4 éve, akkor egész jónak tűnt, bár olyan nagyon mélyen nem mentem bele.
-
Silεncε
őstag
válasz justmemory #2882 üzenetére
Fixme, de a GIL miatt, ha csak threadeket indít, nem fogja kifagyasztani a GUI-t is?
-
Silεncε
őstag
válasz Fecogame #2982 üzenetére
Utóljára 2014-ben lett frissítve a szkript, azóta az említett oldal már egyszer biztosan át lett designolva, ezért nem működik valszeg. (még a shebang is python2). De este ránézek, kíváncsi vagyok (valszeg az span, amiben keresi a felhnevet, már nem létezik).
Mondjuk a belépés ettől még működik, csak éppen a szkript hal meg a végén
[ Szerkesztve ]
-
Silεncε
őstag
válasz don_peter #3279 üzenetére
Mobilappot én még nem is láttam Pythonban írva (ez nem azt jelenti, hogy nem lehetséges, de szerintem nincs rá elterjedt, jól támogatott mód). A BE kész van vagy az is most fog készülni? Oda működhet a Python, a frontend részt (web, mobilappok) viszont valami cross-platform frameworkben csinálnám (ilyenek pl. React Native, Ionic, ezekhez JS tudás kell, vagy mostanában nagyon megy a Flutter, ahhoz meg Dart kell, ami ilyen JS++)
Új hozzászólás Aktív témák
- Diablo IV
- E-roller topik
- Forza sorozat (Horizon/Motorsport)
- Autós topik
- Filmgyűjtés
- Debrecen és környéke adok-veszek-beszélgetek
- Politika
- iPhone topik
- Computex 2024: dedikált NPU-val menedzselné a VGA-t a PowerColor
- Letartóztatták, mert AI segítségével csalt az egyetemi vizsgán
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen