欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > UI Left EXE Right Recive TCPIP

UI Left EXE Right Recive TCPIP

2024/12/22 2:23:03 来源:https://blog.csdn.net/weixin_68067302/article/details/144292974  浏览:    关键词:UI Left EXE Right Recive TCPIP

import tkinter as tk
from tkinter import messagebox, filedialog
from tkinter import ttk
import socket
import threading
import subprocess
import time
from datetime import datetime
from PIL import Image, ImageTk

# 全局变量
client_socket = None
connected = False

def connect_to_server():
    global client_socket, connected
    ip = "127.0.0.1"
    port = 7930
    
    try:
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client_socket.connect((ip, port))
        connected = True
        status_indicator.config(bg='green')
        messagebox.showinfo("Success", f"Connected to server at {ip}:{port}")
        
        # Start a new thread to receive data
        threading.Thread(target=receive_data).start()
    except Exception as e:
        connected = False
        status_indicator.config(bg='red')
        messagebox.showerror("Error", f"Failed to connect to server: {e}")

def disconnect_from_server():
    global client_socket, connected
    if connected:
        client_socket.close()
        connected = False
        status_indicator.config(bg='red')
        messagebox.showinfo("Disconnected", "Disconnected from server")

def receive_data():
    while connected:
        try:
            data = client_socket.recv(1024).decode('utf-8')
            if not data:
                break
            current_time = datetime.now().strftime("%H:%M:%S")
            received_data_text.insert(tk.END, f"[{current_time}] {data}\n")
            received_data_text.yview_moveto(1)  # Scroll to the bottom
        except Exception as e:
            print(f"Error receiving data: {e}")
            break
    disconnect_from_server()

def launch_application():
    app_path = r"D:\aa\Public_Release\aa.exe"
    try:
        subprocess.Popen(app_path)
    except Exception as e:
        messagebox.showerror("Error", f"Failed to launch application: {e}")

# 创建主窗口
root = tk.Tk()
root.title("TCP Client")
root.geometry("800x600")

# 连接状态指示器(右上角)
status_indicator = tk.Frame(root, width=100, height=100, bg='red')
status_indicator.place(x=700, y=0)

# 左侧区域 - 启动应用程序按钮
left_frame = tk.Frame(root, width=800, height=300)
left_frame.pack(side=tk.TOP, fill=tk.X)

# 加载并设置图像
image_path = r"C:\Users\Administrator\Desktop\Study\i.png"  # 替换为实际图像路径
try:
    image = Image.open(image_path)
    image = image.resize((150, 150), Image.Resampling.LANCZOS)
    img = ImageTk.PhotoImage(image)
except IOError:
    img = None

launch_button = tk.Button(left_frame, image=img, command=launch_application)
if img:
    launch_button.image = img  # Keep a reference!
launch_button.pack(pady=125)

# 右侧区域 - 显示接收到的数据
right_frame = tk.Frame(root, width=800, height=300)
right_frame.pack(side=tk.TOP, fill=tk.X)

received_data_label = tk.Label(right_frame, text="Received Data:")
received_data_label.pack(pady=10)

received_data_text = tk.Text(right_frame, wrap=tk.WORD, height=15, width=60)
received_data_text.pack(padx=10, pady=10)

# 控制按钮
control_frame = tk.Frame(root)
control_frame.pack(pady=10)

connect_button = tk.Button(control_frame, text="Connect", command=connect_to_server)
connect_button.grid(row=0, column=0, padx=5)

disconnect_button = tk.Button(control_frame, text="Disconnect", command=disconnect_from_server)
disconnect_button.grid(row=0, column=1, padx=5)

# 初始化全局变量
client_socket = None
connected = False

# 运行主循环
root.mainloop()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com