我想用PyQt编写一个simpe程序来处理服务器-客户机连接(1:1连接就足够了)。我能够编写socket部分,但是对于GUI我一无所知。 我只想有2个对话框,一个用于服务器,一个用于客户端(非常简单,只有1个按钮用于发送,文本字段用于键入消息)。我想从服务器向客户端发送一条消息,然后用另一条消息回复服务器。 你知道怎么开始吗?或者是一个样本代码? 谢谢你
代码:
GUI是由设计工程师创建的。在
from PyQt5 import QtCore, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(353, 266)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(20, 30, 47, 13))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(80, 110, 75, 23))
self.pushButton.setObjectName("pushButton")
self.textEdit = QtWidgets.QTextEdit(Dialog)
self.textEdit.setGeometry(QtCore.QRect(80, 20, 141, 71))
self.textEdit.setObjectName("textEdit")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Message:"))
self.pushButton.setText(_translate("Dialog", "Send"))
这个对话框类:
^{pr2}$服务器类:
class Server():
def __init__(self):
host = socket.gethostname()
port = 5000
server_socket = socket.socket()
server_socket.bind((host, port))
server_socket.listen(2)
conn, address = server_socket.accept()
print("Connection from: " + str(address))
gui = Dialog(server_socket)
gui.show()
while True:
data = conn.recv(1024).decode()
if not data:
break
print("message: " + str(data))
conn.close()
if __name__ == '__main__':
server = Server()
客户端类:
class Client():
def __init__(self):
host = socket.gethostname()
port = 5000
client_socket = socket.socket()
client_socket.connect((host, port))
gui = Dialog(client_socket)
gui.show()
message = ""
while message.lower().strip() != 'bye':
data = client_socket.recv(1024).decode()
print('message: ', data)
client_socket.close()
if __name__ == '__main__':
client = Client()
简单来说:
你的问题的结果是花费了大量的编码时间(大约2-3小时)。因此,一个小小的走过去,让你再次走上正确的道路,自己做下几步。在
main
程序文件是对话框.py而不是客户端.py. 在Dialog
将是可执行文件。在重命名客户端.py进入
LOGIN_GUI
或引用其“本地登录”功能的东西,因为这是您要实现的。使用名称客户端.py用于远程日志记录(不同于服务器的GUI!)。 3.在对话中使用Pythonmultiprocessing
。在3a.进程1运行
main app
3b.进程2运行客户端服务器
3c.其他任务外包时间超过1-2秒(在主界面显示为“冻结”)。
在对话框.py=>;玛玛inAppNameisNOtDialog.py(避免脚本代码中出现混乱/打字错误)
如果像下面这样对服务器进行
ThreadingMixIn
样式的代码,则可以从两台不同的计算机登录。据我所知,这是pyqt5中不可用的工具。另请参见下面代码中的内联注释。在服务器端(修改pythonsSocket-server ThreadingMixIn):
在MainApp.py简言之:
^{pr2}$相关问题 更多 >
编程相关推荐