🗣 Wd提问: 带gui的服务器
🤖 Ai回答: 带GUI的服务器管理工具
下面是一个使用Python和Tkinter创建的带GUI的服务器管理工具。这个应用允许你启动/停止服务器,监控服务器状态,查看日志,以及发送简单的命令。
python
import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import threading
import time
import random
import queue
import datetime
import socket
import sys
class ServerManager:
模拟服务器管理类
def __init__(self):
self.running = False
self.server_thread = None
self.log_queue = queue.Queue()
self.clients = []
self.server_port = 8000
def start_server(self):
启动服务器
if self.running:
return
self.running = True
self.server_thread = threading.Thread(target=self._run_server, daemon=True)
self.server_thread.start()
self.log(服务器启动成功)
def stop_server(self):
停止服务器
if not self.running:
return
self.running = False
self.log(服务器停止中...)
模拟关闭连接
time.sleep(1)
self.log(服务器已停止)
def _run_server(self):
模拟服务器运行
self.log(f服务器在端口 {self.server_port} 上运行)
while self.running:
模拟客户端连接
if random.random() < 0.1:
client_id = fclient-{random.randint(1000,9999)}
self.clients.append(client_id)
self.log(f新客户端连接: {client_id})
模拟客户端断开
if self.clients and random.random() < 0.05:
client_id = random.choice(self.clients)
self.clients.remove(client_id)
self.log(f客户端断开: {client_id})
模拟服务器活动
if random.random() < 0.2:
self.log(f处理请求: {random.choice(['GET', 'POST', 'PUT'])} /api/{random.randint(1,100)})
time.sleep(0.5)
def send_command(self, command):
发送命令到服务器
if not self.running:
self.log(错误: 服务器未运行)
return
self.log(f 发送命令: {command})
模拟命令处理
time.sleep(0.3)
responses = [
命令执行成功,
无效的命令,
权限不足,
操作已完成,
服务器正忙,请稍后重试
]
response = random.choice(responses)
self.log(f<<< 响应: {response})
def get_status(self):
获取服务器状态
return {
running: self.running,
uptime: random.randint(0, 1000),
clients: len(self.clients),
cpu: random.randint(1, 100),
memory: random.randint(30, 95)
}
def log(self, message):
记录日志
timestamp = datetime.datetime.now().strftime(%H:%M:%S)
self.log_queue.put(f[{timestamp}] {message})
class ServerGUI:
服务器管理GUI
def __init__(self, root):
self.root = root
self.root.title(服务器管理工具 v1.0)
self.root.geometry(800x600)
self.root.resizable(True, True)
创建服务器管理器
self.server = ServerManager()
设置样式
self.setup_style()
创建界面
self.setup_ui()
开始日志更新循环
self.update_logs()
开始状态更新循环
self.update_status()
def setup_style(self):
配置界面样式
style = ttk.Style()
style.configure(TButton, padding=6, font=(Arial, 10))
style.configure(TLabel, font=(Arial, 10))
style.configure(Status.TLabel, font=(Arial, 9), foreground=444)
style.configure(Header.TLabel, font=(Arial, 12, bold))
def setup_ui(self):
创建用户界面
创建主框架
main_frame = ttk.Frame(self.root, padding=10)
main_frame.pack(fill=tk.BOTH, expand=True)
顶部控制面板
control_frame = ttk.LabelFrame(main_frame, text=服务器控制, padding=10)
control_frame.pack(fill=tk.X, padx=5, pady=5)
启动/停止按钮
self.start_button = ttk.Button(control_frame, text=启动服务器,
command=self.toggle_server, width=15)
self.start_button.pack(side=tk.LEFT, padx=5)
状态指示器
self.status_label = ttk.Label(control_frame, text=状态: 已停止, foreground=red)
self.status_label.pack(side=tk.LEFT, padx=20)
客户端数量
self.clients_label = ttk.Label(control_frame, text=客户端: 0)
self.clients_label.pack(side=tk.LEFT, padx=20)
资源使用情况
self.cpu_label = ttk.Label(control_frame, text=CPU: %)
self.cpu_label.pack(side=tk.LEFT, padx=20)
self.mem_label = ttk.Label(control_frame, text=内存: %)
self.mem_label.pack(side=tk.LEFT, padx=20)
命令输入区域
command_frame = ttk.LabelFrame(main_frame, text=服务器命令, padding=10)
command_frame.pack(fill=tk.X, padx=5, pady=5)
self.command_entry = ttk.Entry(command_frame, width=50)
self.command_entry.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)
self.command_entry.bind(<Return, self.send_command)
send_button = ttk.Button(command_frame, text=发送, command=self.send_command)
send_button.pack(side=tk.LEFT, padx=5)
日志区域
log_frame = ttk.LabelFrame(main_frame, text=服务器日志, padding=10)
log_frame.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
self.log_area = scrolledtext.ScrolledText(log_frame, wrap=tk.WORD, state='disabled')
self.log_area.pack(fill=tk.BOTH, expand=True)
添加一些示例日志
self.server.log(服务器管理工具已启动)
self.server.log(准备就绪,等待启动服务器)
def toggle_server(self):
切换服务器状态
if not self.server.running:
self.server.start_server()
self.start_button.config(text=停止服务器)
else:
self.server.stop_server()
self.start_button.config(text=启动服务器)
def send_command(self, event=None):
发送命令到服务器
command = self.command_entry.get().strip()
if not command:
return
self.server.send_command(command)
self.command_entry.delete(0, tk.END)
def update_logs(self):
更新日志显示
while not self.server.log_queue.empty():
log_entry = self.server.log_queue.get()
self.log_area.config(state='normal')
self.log_area.insert(tk.END, log_entry + \n)
self.log_area.config(state='disabled')
self.log_area.see(tk.END)
self.root.after(200, self.update_logs) 每200ms检查一次
def update_status(self):
更新服务器状态显示
status = self.server.get_status()
更新状态标签
if status[running]:
self.status_label.config(text=状态: 运行中, foreground=green)
else:
self.status_label.config(text=状态: 已停止, foreground=red)
更新客户端数量
self.clients_label.config(text=f客户端: {status['clients']})
更新资源使用情况
if status[running]:
self.cpu_label.config(text=fCPU: {status['cpu']}%)
self.mem_label.config(text=f内存: {status['memory']}%)
根据使用率设置颜色
cpu_color = green
if status[cpu] 80:
cpu_color = red
elif status[cpu] 60:
cpu_color = orange
self.cpu_label.config(foreground=cpu_color)
mem_color = green
if status[memory] 85:
mem_color = red
elif status[memory] 70:
mem_color = orange
self.mem_label.config(foreground=mem_color)
else:
self.cpu_label.config(text=CPU:
📣 商家广告:





0
IP地址: 41.251.115.78
搜索次数: 0
提问时间: 2025-11-01 14:06:11
🛒 域名购买:
yz.biz
jqr.hk
te.biz
cgbc.cn
f.cq.cn
lt.gs
723.net.cn
75.gold
pai.pw
15.gold
❓️ 热门提问:
成都服务器机柜厂
云主机 公网ip
到机房
关键词单页应用SEO
apache的服务器
mc1.12.2纯净生存服务器
挂机电机
一个服务器能放几个网站
高防服务器硬件
VPS搭建网站主机评测
豌豆Ai站群搜索引擎系统
🌐 域名评估:
trump.xz.cn
azqy.cn
kimi.school
uj.gs
vv.sn.cn
621.net.cn
byd.hl.cn
drone.xj.cn
musk.js.cn
dgsq.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
网站搜索引擎入口
한국 검색 엔진
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。