PySimpleGUI创建socket客户端文件发送窗口
时间: 2023-09-17 11:07:53 浏览: 75
以下是使用PySimpleGUI创建socket客户端文件发送窗口的示例代码:
```python
import PySimpleGUI as sg
import socket
import os
# 定义窗口布局
layout = [
[sg.Text('文件路径:'), sg.InputText(key='filepath'), sg.FileBrowse()],
[sg.Text('接收端IP地址:'), sg.InputText(key='ip')],
[sg.Text('端口号:'), sg.InputText(key='port')],
[sg.Button('发送'), sg.Button('取消')]
]
# 创建窗口对象
window = sg.Window('文件发送', layout)
# 进入事件循环
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == '取消':
break
if event == '发送':
filepath = values['filepath']
ip = values['ip']
port = int(values['port'])
# 检查文件是否存在
if not os.path.exists(filepath):
sg.popup('文件不存在!')
continue
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
try:
s.connect((ip, port))
except Exception as e:
sg.popup(f'连接服务器失败:{str(e)}')
continue
# 发送文件名和文件内容
try:
filename = os.path.basename(filepath)
with open(filepath, 'rb') as f:
filedata = f.read()
s.sendall(f'{filename}\n'.encode())
s.sendall(filedata)
except Exception as e:
sg.popup(f'发送文件失败:{str(e)}')
continue
sg.popup('文件发送成功!')
# 关闭窗口和socket
window.close()
s.close()
```
该程序通过PySimpleGUI创建一个简单的窗口,其中包含三个输入框和两个按钮。用户可以输入要发送的文件路径、接收端IP地址和端口号,然后点击“发送”按钮发送文件。
程序使用Python内置的socket库创建一个TCP连接,连接到接收端的IP地址和端口号。然后,程序读取要发送的文件并将其发送到接收端。在发送文件之前,程序会检查文件是否存在,并在发送文件后弹出一个消息框来通知用户文件是否已成功发送。
注意:该程序仅适用于发送小型文件。如果要发送大型文件,建议使用分块方式发送文件,以避免网络传输问题。
阅读全文