PySimpleGUI创建socket客户端文件接收
时间: 2023-09-17 14:09:14 浏览: 88
以下是使用PySimpleGUI创建socket客户端文件接收的示例代码:
```python
import PySimpleGUI as sg
import socket
import os
# 定义GUI布局
layout = [[sg.Text('请选择文件保存路径:'), sg.InputText(key='path'), sg.FolderBrowse()],
[sg.Text('请选择文件:'), sg.Input(key='file'), sg.FileBrowse()],
[sg.Button('发送')]]
# 创建窗口
window = sg.Window('Socket Client', layout)
# 创建socket客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
if event == '发送':
# 获取文件路径和名称
file_path = values['path']
file_name = values['file']
if not file_path or not file_name:
sg.popup('请选择文件和保存路径')
continue
# 连接服务器
try:
client_socket.connect(('localhost', 12345))
except:
sg.popup('无法连接服务器')
continue
# 发送文件名和文件大小
file_size = os.path.getsize(file_name)
client_socket.send(f'{file_name}|{file_size}'.encode())
# 发送文件内容
with open(file_name, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
client_socket.send(data)
# 关闭socket客户端
client_socket.close()
sg.popup('文件发送成功')
break
# 关闭窗口
window.close()
```
在该示例代码中,我们创建了一个包含文件选择和发送按钮的PySimpleGUI窗口。当用户单击发送按钮时,程序会获取用户选择的文件路径和文件名,并尝试连接到服务器。连接成功后,程序会先发送文件名和文件大小给服务器,然后逐步读取文件内容并发送。文件发送完成后,程序会关闭socket客户端并弹出一个提示框告知用户发送成功。
阅读全文