PySimpleGUI创建socket客户端文件接收窗口
时间: 2023-09-17 11:10:26 浏览: 110
以下是使用PySimpleGUI创建socket客户端文件接收窗口的示例代码:
```python
import PySimpleGUI as sg
import socket
import os
# 定义GUI布局
layout = [
[sg.Text('IP地址:'), sg.InputText('127.0.0.1', key='ip')],
[sg.Text('端口号:'), sg.InputText('9999', key='port')],
[sg.Text('接收文件路径:'), sg.InputText(key='filepath'), sg.FileBrowse('选择文件', file_types=(('All Files', '*.*'),))],
[sg.Button('开始接收', key='start'), sg.Button('退出', key='exit')]
]
# 创建GUI窗口
window = sg.Window('文件接收客户端', layout)
while True:
event, values = window.read()
if event in (None, 'exit'):
break
elif event == 'start':
# 获取IP地址、端口号和文件路径
ip = values['ip']
port = int(values['port'])
filepath = values['filepath']
# 创建socket连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
# 发送文件名和文件大小
filename = os.path.basename(filepath)
filesize = os.path.getsize(filepath)
s.send(f"{filename}|{filesize}".encode())
# 接收服务器的确认信息
data = s.recv(1024).decode()
if data == 'OK':
# 打开文件并写入数据
with open(filepath, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
s.send(data)
# 接收服务器的确认信息
data = s.recv(1024).decode()
if data == 'OK':
sg.popup('文件接收完成!')
else:
sg.popup('文件接收失败!')
# 关闭socket连接
s.close()
# 关闭GUI窗口
window.close()
```
运行以上代码,可以看到创建的文件接收客户端窗口。在窗口中输入服务器的IP地址、端口号和要接收的文件路径,然后点击“开始接收”按钮,即可开始接收文件。文件接收完成后,会弹出提示框提示文件接收结果。如果文件接收失败,则需要重新点击“开始接收”按钮重新接收文件。如果要退出程序,则可以点击“退出”按钮或直接关闭窗口。
注意:以上代码仅作为示例,实际使用时需要根据具体需求进行修改和完善。
阅读全文