zoukankan      html  css  js  c++  java
  • [Python Study Notes]CS架构远程访问获取信息--Client端v2.0

    更新内容:

    1.增加内存信息获取

    2.增加电池信息获取

    3.增加磁盘信息获取

    4.重新布局窗体

    5.增加窗体名称

    6.增加连接成功之前,不可按压

    效果图:

    image

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    >>文件: ps_client.py
    >>作者: liu yang
    >>邮箱: liuyang0001@outlook.com
    >>博客: www.cnblogs.com/liu66blog
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys, os
    from socket import *
    from tkinter import *
    
    class Ps_client():
        def __init__(self):
            self.ip=None
            self.port=None
            self.data=None
            # 创建ipv4套接字
            self.client=socket(AF_INET,SOCK_STREAM)
            self.root=Tk()
            self.root.geometry('300x300+250+250')
    
    
            # 创建IP输入框
            var_ip = StringVar()
            var_ip.set('localhost')
            self.et_ip=Entry(self.root,width=30,textvariable=var_ip)
            self.et_ip.pack()
    
            # 创建IP输入框的Label
            self.ip_lable=Label(self.root,text="ip地址")
    
            # 创建端口号输入框
            var_port = StringVar()
            var_port.set(66)
            self.et_port=Entry(self.root,width=30,textvariable=var_port)
            # 创建端口号Label
            self.port_lable=Label(self.root,text="端口号")
    
            # 创建连接按钮,注意!!!command=后面的连接的不加括号
            self.connButton=Button(self.root,text="连接",command=self.connect)
            # 创建获取cpu按钮
            self.getCpuButton=Button(self.root,text="CPU",state='disable',command=self.get_cpu_info)
            # 创建获取memory按钮
            self.getMemoryButton=Button(self.root,text="内存",state='disable',command=self.get_memory_info)
            # 创建获取battery按钮
            self.getBatteryButton = Button(self.root, text="电池", state='disable', command=self.get_battery_info)
            # 创建获取disk按钮
            self.getDiskButton=Button(self.root,text="磁盘",state='disable',command=self.get_disk_info)
            # 创建断开按钮
            self.exitButton=Button(self.root,text="退出",state='disable',command=self.exit_connect)
    
            self.txtBox=Text(self.root,width=40,height=10)
    
    
    
        def main(self):
            self.root.title('博客园:liu66')
            self.et_ip.place(x=10,y=20)
            self.et_port.place(x=10,y=50)
            self.ip_lable.place(x=245,y=20)
            self.port_lable.place(x=245,y=50)
    
            self.connButton.place(x=10,y=80)
            self.getCpuButton.place(x=70,y=80)
            self.getMemoryButton.place(x=130,y=80)
            self.getBatteryButton.place(x=190,y=80)
            self.getDiskButton.place(x=250,y=80)
            self.txtBox.place(x=5,y=120)
            self.exitButton.place(x=255,y=260)
            # self.txtBox.insert(INSERT,'在这里显示内容')
            self.root.mainloop()
    
        def connect(self):
            self.ip=self.et_ip.get()
            try:
                self.port=int(self.et_port.get())
            except ValueError:
                self.txtBox.delete(0.0,END)
                self.txtBox.insert(0.0,"请输入合法的ip和端口...")
            else:
                print("ip:%s"%self.ip)
                print("port:%s"%self.port)
                self.txtBox.delete(0.0,END)
                self.txtBox.insert(0.0,"正在链接中...")
                try:
                    self.client.connect((self.ip,self.port))
                except OSError:
                    print("向一个无法连接的网络尝试了一个套接字操作")
                    self.txtBox.delete(0.0, END)
                    self.txtBox.insert(0.0, "%s:%d连接失败..."%(self.ip,self.port))
                else:
                    print("%s连接成功..."%self.ip)
                    self.txtBox.delete(0.0, END)
                    self.txtBox.insert(0.0, "%s:%d连接成功..."%(self.ip,self.port))
                    # 连接成功则将其他按钮变为可按状态
                    self.exitButton['state']='active'
                    self.getCpuButton['state']='active'
                    self.getMemoryButton['state']='active'
                    self.getBatteryButton['state']='active'
                    self.getDiskButton['state']='active'
    
    
        def get_cpu_info(self):
            self.data='cpu'
            self.client.send(self.data.encode('utf-8'))
            # 将接受的数据装换成浮点数据
            cpu_used=float(self.client.recv(1024).decode('utf-8'))
            print('CPU使用率:%0.2f'%cpu_used+'%')
            self.txtBox.delete(0.0, END)
            # 字符串前加上r为防转义
            self.txtBox.insert(0.0, "当前的cpu使用率:%0.2f"%cpu_used+r"%")
    
        def get_memory_info(self):
            self.data='memory'
            self.client.send(self.data.encode('utf-8'))
            memory_message=self.client.recv(1024).decode('utf-8')
            print(memory_message)
            # 清除显示
            self.txtBox.delete(0.0, END)
            # 显示内存信息
            self.txtBox.insert(0.0, "%s" %memory_message)
    
    
        def get_battery_info(self):
            self.data='battery'
            self.client.send(self.data.encode('utf-8'))
            battery_message=self.client.recv(1024).decode('utf-8')
            print(battery_message)
            # 清除显示
            self.txtBox.delete(0.0, END)
            # 显示内存信息
            self.txtBox.insert(0.0, "%s" %battery_message)
    
        def get_disk_info(self):
            self.data='disk'
            self.client.send(self.data.encode('utf-8'))
            disk_message=self.client.recv(1024).decode('utf-8')
            print(disk_message)
            # 清除显示
            self.txtBox.delete(0.0, END)
            # 显示内存信息
            self.txtBox.insert(0.0, "%s" %disk_message)
    
    
        def exit_connect(self):
            self.client.close()
            self.txtBox.delete(0.0, END)
            self.txtBox.insert(0.0, "当前连接已断开...")
            print("当前连接已断开...")
            self.exitButton['state'] = 'disable'
            self.getCpuButton['state'] = 'disable'
            self.getMemoryButton['state'] = 'disable'
            # 关闭当前窗口
            self.root.destroy()
    
    if __name__ == '__main__':
        Ps=Ps_client()
        Ps.main()
    
  • 相关阅读:
    jdk1.8 -- 方法推导 静态方法、实例方法、构造方法推导
    java23种设计模式之五:代理模式
    区块链共识机制:POW、POA、POS、DPOS、PBFT、DBFT
    Backen-Development record 1
    记录一下哈希表底层原理
    总结区块链系统运行过程
    认识一下区块链
    Django:模板template(二)
    Django:模板template(一)
    Django:视图views(三)
  • 原文地址:https://www.cnblogs.com/liu66blog/p/8452099.html
Copyright © 2011-2022 走看看