[Python Study Notes]CS架构远程访问获取信息--Client端v1.0
更新内容:
1.添加entry栏默认ip和port口
2.修正退出功能
3.添加退出自动关闭窗口功能
4.优化cpu显示为固定保留两位小数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: ps_client.py
>>作者: liu yang
>>邮箱: liuyang0001@outlook.com
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#!/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.connButten=Button(self.root,text="连接",command=self.connect)
# 创建获取按钮
self.getCpuButten=Button(self.root,text="CPU",state='disable',command=self.get_cpu_info)
# 创建断开按钮
self.exitButten=Button(self.root,text="退出",state='disable',command=self.exit_connect)
self.txtBox=Text(self.root,width=40,height=10)
def main(self):
self.et_ip.place(x=5,y=20)
self.et_port.place(x=5,y=50)
self.ip_lable.place(x=230,y=20)
self.port_lable.place(x=230,y=50)
self.connButten.place(x=5,y=80)
self.getCpuButten.place(x=90,y=80)
self.exitButten.place(x=180,y=80)
self.txtBox.place(x=5,y=120)
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.exitButten['state']='active'
self.getCpuButten['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 exit_connect(self):
self.client.close()
self.txtBox.delete(0.0, END)
self.txtBox.insert(0.0, "当前连接已断开...")
print("当前连接已断开...")
self.exitButten['state'] = 'disable'
self.getCpuButten['state'] = 'disable'
# 关闭当前窗口
self.root.destroy()
if __name__ == '__main__':
Ps=Ps_client()
Ps.main()

[Python Study Notes]CS架构远程访问获取信息--Client端v1.0的更多相关文章
- [Python Study Notes]CS架构远程访问获取信息--Client端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 ''''''''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--Client端
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Eureka系列(三)获取服务Client端具体实现
获取服务Client 端流程 我们先看下面这张图片,这张图片简单描述了下我们Client是如何获取到Server已续约实例信息的流程: 从图片中我们可以知晓大致流程就是Client会自己开启一个 ...
- [Python Study Notes]进程信息(丁丁软件监控进程,http-post)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]cpu信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]电池信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]内存信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
随机推荐
- 关于jquery ajax跨域请求获取response headers问题
背景:最近项目jwt用户认证方式,关于jwt本人就不再赘述,大家可自行百度. jwt token基本流程是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一 ...
- two Pass方法连通域检测
原理: Two-Pass方法检测连通域的原理可参见这篇博客:http://blog.csdn.net/lichengyu/article/details/13986521. 参考下面动图,一目了然. ...
- IT术语的正确读法
Linux /ˈlɪnəks/ /ˈlɪnʊks/(EU) Linux 是一类 Unix 计算机操作系统的统称.该操作系统的核心的名字也是“ Linux” .参考: < !-- m --> ...
- 为什么选择.NETCore?
为什么.NETCore? 学习新的开发框架是一项巨大的投资.您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序.作为开发人员,有许多框架可供选择,很难知道什么是最适合的工作.即使您正在使用. ...
- Java读写Excel之POI超入门(转)
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.Apache POI ...
- SuperSocket基础一
SuperSocket基础(一)——————基本概念 项目中之前一直使用TCP socket服务框架,但是不利于扩展.最近刚接触到开源的superSocket感觉很不错,特记录一下.官方开源地址:ht ...
- Linuxc - 操作系统内存分配
静态变量是存储在数据段的,在函数中可以共用. 全局变量也是存储在数据段的,在全局中可以共用. 指针变量本质上是地址,数组变量本质上也是地址. 数组是可靠的,不可变的地址.指针变量是不可靠的,可变的.数 ...
- [one day one question] webpack打包压缩 ES6 js、.vue报错
问题描述: 报错: ERROR in js/test.js from UglifyJs Unexpected token punc ?(?, expected punc ?:? [js/test.js ...
- python_6_字符串
什么是字符串? --一般用户输入数据和一堆有意义或者没有意义的文字符号组合 对字符串有哪些操作? --字符串本身不能修改,可以切片,可以读取 -- .capitalize() ...
- python_爬百度百科词条
如何爬取? 明确目标:爬取百度百科,定初始百度词条:python,初始URL:http://baike.baidu.com/item/Python,爬取数据量为1000条,值爬取简介,标题,和简介中u ...