写一个python程序,利用tk实现一个界面,界面包含输入IP地址框,端口号框,服务器与客户端选择框,收发数据输入框,发送按钮,连接状态显示灯,以及一个数据显示界面,界面以时间为横坐标,把每次创建Socket连接后的发送数据到接收数据的耗时统计在数据显示界面
时间: 2024-09-30 09:07:24 浏览: 32
Python实现一个服务器监听多个客户端请求
在Python中,你可以使用Tkinter库来创建一个简单的图形用户界面(GUI)。以下是一个基础的示例,展示了如何实现这个功能:
```python
import tkinter as tk
from tkinter import ttk
import time
import socket
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.ip_label = ttk.Label(self, text="请输入IP:")
self.ip_entry = ttk.Entry(self)
self.port_label = ttk.Label(self, text="请输入端口:")
self.port_entry = ttk.Entry(self)
self.server_client_var = tk.StringVar(value='Server')
server_client_radio = ttk.Radiobutton(self, text='Server', variable=self.server_client_var, value='server')
client_radio = ttk.Radiobutton(self, text='Client', variable=self.server_client_var, value='client')
self.send_data_label = ttk.Label(self, text="发送数据:")
self.send_data_entry = ttk.Entry(self)
self.send_button = ttk.Button(self, text="发送", command=self.send_data)
self.connect_status_label = ttk.Label(self, text="连接状态:", foreground='green') # 假设已连接
self.time_graph = ttk.Treeview(self, xscrollcommand=self.xscroll_set, yscrollcommand=self.yscroll_set)
# ...其他布局代码...
def send_data(self):
ip = self.ip_entry.get()
port = int(self.port_entry.get())
role = self.server_client_var.get()
data = self.send_data_entry.get()
if role == 'server':
# 对于服务器端,实现连接、发送和更新时间等功能
elif role == 'client':
# 对于客户端,实现连接请求、接收数据并更新时间等功能
# 更新时间线数据
self.time_graph.insert('', 'end', values=(time.strftime('%Y-%m-%d %H:%M:%S'), f"{data} - Sent"))
# GUI主循环
root = tk.Tk()
app = Application(master=root)
app.mainloop()
阅读全文