pysimplegui tcp双向通信
时间: 2023-09-18 21:13:18 浏览: 39
PySimpleGUI可以通过套接字(socket)实现TCP双向通信。以下是一个简单的例子:
```python
import PySimpleGUI as sg
import socket
import threading
def receive_message(sock):
while True:
data = sock.recv(1024).decode()
if not data:
break
window.write_event_value('-MESSAGE-', data)
def main():
# 创建GUI窗口
layout = [[sg.Output(size=(50,20))],
[sg.Input(key='-INPUT-', size=(40,1)), sg.Button('发送')]]
window = sg.Window('TCP双向通信', layout)
# 创建套接字并连接服务器
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8888))
# 创建接收消息的线程
receive_thread = threading.Thread(target=receive_message, args=(sock,))
receive_thread.daemon = True
receive_thread.start()
# 事件循环
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == '发送':
message = values['-INPUT-']
sock.sendall(message.encode())
elif event == '-MESSAGE-':
print(values[event])
# 关闭套接字和窗口
sock.close()
window.close()
if __name__ == '__main__':
main()
```
这个程序创建了一个GUI窗口,其中有一个文本框用于输入消息,一个按钮用于发送消息,以及一个输出框用于显示接收到的消息。程序会创建一个套接字并连接到本地的8888端口,然后创建一个接收消息的线程。在事件循环中,如果用户点击了发送按钮,程序会将消息发送给服务器;如果接收到了服务器发送的消息,程序会将消息显示在输出框中。当用户关闭窗口时,程序会关闭套接字和窗口。