I added HOST and PORT definition, because when there isnt them, it gave an error.
Actually, i want to create as a function. But i tried as a class.
When i try as a function.
import socket HOST = '192.168.1.62' PORT = 80 class client: def __init__(self): self.HOST = '192.168.1.62' # The server's hostname or IP address, NodeMCU IP Address self.PORT = 80 # The port used by the server, PORT NUMBER in ARDUINO CODE def transfer_data(self): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b'Hello, world') self.data = s.recv(1024) # To try run stand-alone if __name__ == '__main__': cl = client() cl.transfer_data() print(cl.data)I could take output, thanks your solution. Can you share with me cause of "b" ? When i delete it, running was unsuccesful.
Output: & "C:/Program Files/Python37/python.exe" c:/Users/User/Desktop/PYQT/client.py
b'0'
(Apr-01-2019, 09:10 AM)Larz60+ Wrote: Now in the GUI class:
import Client
# and add to GUI.py
class Ui_MainWindow(object): def __init__(self): self.client = Client.Client() self.cdata = self.client.transfer_data() # then when needed: data = self.client.data()A better way would to have a main module that imports both GUI and Client
and interfaces externally.
Actually, i want to create as a function. But i tried as a class.
from PyQt5 import QtCore, QtGui, QtWidgets import client class Ui_MainWindow(object): def __init__(self): self.client = client.client() self.cdata = self.client.transfer_data() # then when needed: data = self.client.data() def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 30, 600, 300)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.labelDistance = QtWidgets.QLabel(self.centralwidget) self.labelDistance.setGeometry(QtCore.QRect(150, 150, 400, 300)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.labelDistance.setFont(font) self.labelDistance.setAlignment(QtCore.Qt.AlignCenter) self.labelDistance.setObjectName("labelDistance") self.labelcm = QtWidgets.QLabel(self.centralwidget) self.labelcm.setGeometry(QtCore.QRect(150, 150, 700, 300)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.labelcm.setFont(font) self.labelcm.setAlignment(QtCore.Qt.AlignCenter) self.labelcm.setObjectName("labelcm") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 259, 21)) 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 retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Distance Measurement")) self.label.setText(_translate("MainWindow", "Obstacle Distance")) self.labelDistance.setText(_translate("MainWindow", "0")) self.labelcm.setText(_translate("MainWindow", "cm")) 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_())
Error:PS C:\Users\User> & "C:/Program Files/Python37/python.exe" c:/Users/User/Desktop/PYQT/GUI.py
Traceback (most recent call last):
File "c:/Users/User/Desktop/PYQT/GUI.py", line 64, in <module>
ui = Ui_MainWindow()
File "c:/Users/User/Desktop/PYQT/GUI.py", line 10, in __init__
data = self.client.data()
TypeError: 'bytes' object is not callable
When i try as a function.
from PyQt5 import QtCore, QtGui, QtWidgets import socket HOST = '192.168.1.62' # The server's hostname or IP address PORT = 80 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b'Hello, world') data = s.recv(1024) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(259, 124) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 10, 211, 41)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.labelDistance = QtWidgets.QLabel(self.centralwidget) self.labelDistance.setGeometry(QtCore.QRect(60, 50, 71, 41)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.labelDistance.setFont(font) self.labelDistance.setAlignment(QtCore.Qt.AlignCenter) self.labelDistance.setObjectName("labelDistance") self.labelcm = QtWidgets.QLabel(self.centralwidget) self.labelcm.setGeometry(QtCore.QRect(120, 50, 71, 41)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(20) self.labelcm.setFont(font) self.labelcm.setAlignment(QtCore.Qt.AlignCenter) self.labelcm.setObjectName("labelcm") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 259, 21)) 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 retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Distance Measurement")) self.label.setText(_translate("MainWindow", "Obsctacle Distance")) self.labelDistance.setText(_translate("MainWindow", "0")) self.labelcm.setText(_translate("MainWindow", "cm")) # User Code self.check_event() def check_event(self): self.labelDistance.setText(data) 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_())
Error:PS C:\Users\User> & "C:/Program Files/Python37/python.exe" c:/Users/User/Desktop/PYQT/obstacle_distance_data_DENEME.py
Traceback (most recent call last):
File "c:/Users/User/Desktop/PYQT/obstacle_distance_data_DENEME.py", line 79, in <module>
ui.setupUi(MainWindow)
File "c:/Users/User/Desktop/PYQT/obstacle_distance_data_DENEME.py", line 58, in setupUi
self.retranslateUi(MainWindow)
File "c:/Users/User/Desktop/PYQT/obstacle_distance_data_DENEME.py", line 68, in retranslateUi
self.check_event()
File "c:/Users/User/Desktop/PYQT/obstacle_distance_data_DENEME.py", line 71, in check_event
self.labelDistance.setText(data)
TypeError: setText(self, str): argument 1 has unexpected type 'bytes'
As you see, I dont sure what I do.