就是这样子的了。。没办法。我抽时间再修改。

8H的working

#!/use/bin/python
#-*-coding:utf-8-*-from tkinter import *
from tkinter.scrolledtext import ScrolledText
import threading,time
import urllib.request as urlreq#外观状态的改变
def disab_lfm1():entr1_1["state"]="disable"entr1_2["state"]="disable"def enab_lfm1():entr1_1["state"]="normal"entr1_2["state"]="normal"checkbox1_3["state"] = "normal"def enab_lfm2():entr2_1["state"] ="normal"entr2_2["state"] ="normal"entr2_3["state"] ="normal"entr2_4["state"] ="normal"entr2_5["state"] ="normal"entr2_6["state"] = "normal"def disab_lfm2():entr2_1["state"] ="disable"entr2_2["state"] ="disable"entr2_3["state"] ="disable"entr2_4["state"] ="disable"entr2_5["state"] ="disable"entr2_6["state"] = "disable"def change_stat():if checkbox_val.get():enab_lfm2()else:disab_lfm2()
#发送SMTP邮件
def send_mail():import smtplibfrom email.mime.text import MIMETextmsg_from = entr2_6.get() #发件人passwd = entr2_3.get() #密码msg_to = entr2_5.get() #收件人subject = entr2_4.get()content = entr1_1.get()+entr2_4.get()+"\n告警!告警!!告警!!!"msg = MIMEText(content)msg['Subject'] = subjectmsg['From'] = msg_frommsg['To'] = msg_totry:sendM = smtplib.SMTP(entr2_1.get(), 25)sendM.login(msg_from, passwd)sendM.sendmail(msg_from, msg_to, msg.as_string())print("发送成功")except smtplib.SMTPException as e:print("发送失败")finally:sendM.quit()#从停止中点击开始运行后的状态改变
def start_moniter():global monit_state,tdtxinfo3_1.delete(0.0,END)monit_state=Truebtn1_r["state"]="disable"btn1_r['text'] = "运行中"btn2_r["text"] = "停止"btn2_r["state"]="normal"checkbox1_3["state"] = "disable"disab_lfm2()disab_lfm1()unm = 0while monit_state:unm += 1web_moniter() #无限循环的监控time.sleep(int(entr1_2.get()))#创建新的线程
def new_thread():global tdtd = threading.Thread(target=start_moniter)td.setDaemon(True)td.start()#线程中要运行的无限循环
def web_moniter():urladd =entr1_1.get()timeot=int(entr1_2.get())try:web_f = urlreq.urlopen(url=urladd, timeout=timeot)print(web_f.getcode())if web_f.getcode() == 200:succ_info = "%s正常\n" % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))print("%s" % (succ_info))txinfo3_1.insert(END, succ_info)txinfo3_1.see(END)except:fail_info = "%s不正常\n" % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))print("%s" % (fail_info))txinfo3_1.insert(END, fail_info)if checkbox_val.get():send_mail()#从运行中停止后的改变
def stop_moniter():global monit_stateprint(td.isAlive())monit_state=Falsebtn1_r["state"]="normal"btn1_r['text'] = "开始"btn2_r["text"] = "停止中"btn2_r["state"]="disable"checkbox1_3["state"]="disable"enab_lfm1()if checkbox_val.get():enab_lfm2()else:disab_lfm2()
#构造windows外观及默认值
root = Tk()
root.title("网页监控1.5")
root.resizable(0,0)
labelframe1 = LabelFrame(root,width=25, height=30, text="监控信息")
labelframe1.grid(row=0, column=0)
labelframe2 = LabelFrame(root, width=25, height=20,text="邮件信息")
labelframe2.grid(row=1, column=0)
labelframe3 = LabelFrame(root, text="监控结果")
labelframe3.grid(row=0, column=1, rowspan=3)
leble1_1 = Label(labelframe1, text="需监控的网页:")
leble1_1.grid(row=0, column=0,sticky=W)
leble1_2 = Label(labelframe1, text="监控时间间隔(s):")
leble1_2.grid(row=2, column=0,sticky=W, )
web_addr=StringVar()
web_addr.set("http://www.baidu.com")
entr1_1 = Entry(labelframe1,width=32,textvariable=web_addr)#网页地址
entr1_1.grid(row=1, column=0, columnspan=2,sticky=W)
moni_time =IntVar()
moni_time.set(10)
entr1_2 = Entry(labelframe1, width=10, textvariable=moni_time) #监控时间
entr1_2.grid(row=3, column=0,sticky=W)
checkbox_val=BooleanVar()
checkbox_val.set(False)
checkbox1_3 = Checkbutton(labelframe1,variable=checkbox_val, text="是否邮件提醒", command=change_stat)
checkbox1_3.grid(row=3, column=1)
leble2_1 = Label(labelframe2, text="SMTP服务器(端口:25):")
leble2_1.grid(row=0, column=0,sticky=W)
leble2_2 = Label(labelframe2, text="账    户:")
leble2_2.grid(row=2, column=0,sticky=W)
leble2_3 = Label(labelframe2, text="密    码:")
leble2_3.grid(row=4, column=0,sticky=W)
leble2_4 = Label(labelframe2, text="邮件标题:")
leble2_4.grid(row=6, column=0,sticky=W)
leble2_5 = Label(labelframe2, text="收件人(1个):")
leble2_5.grid(row=8, column=0,sticky=W)
leble2_6 = Label(labelframe2, text="发件人(@全称):")
leble2_6.grid(row=10, column=0,sticky=W)
smtp_var=StringVar()
smtp_var.set("smtp.163.com")
entr2_1 = Entry(labelframe2,width=30,textvariable=smtp_var, state="disable")
entr2_1.grid(row=1, column=0)
user_var=StringVar()
user_var.set("users")
entr2_2 = Entry(labelframe2,width=30,textvariable=user_var,state="disable")
entr2_2.grid(row=3, column=0)
pw_var=StringVar()
pw_var.set("password")
entr2_3 = Entry(labelframe2,width=30,textvariable=pw_var, show="@",state="disable")
entr2_3.grid(row=5, column=0)
title_var=StringVar()
title_var.set("-*-网页无法访问-*-")
entr2_4 = Entry(labelframe2,width=30,textvariable=title_var,state="disable")
entr2_4.grid(row=7, column=0)
title_var=StringVar()
title_var.set("user@163.com")
entr2_5 = Entry(labelframe2,width=30,textvariable=title_var,state="disable")
entr2_5.grid(row=9, column=0)
title_var=StringVar()
title_var.set("user@163.com")
entr2_6 = Entry(labelframe2,width=30,textvariable=title_var,state="disable")
entr2_6.grid(row=11, column=0)
txinfo3_1=ScrolledText(labelframe3, height=40, width = 30)
txinfo3_1.pack()
frame4=Frame(root)
frame4.grid(row=2,column=0)
btn1_r=Button(frame4,width=10,text ="开始", command=new_thread)
btn1_r.grid(row=0, column=0)
btn2_r=Button(frame4,width=10,text ="停止中", state="disable", command=stop_moniter)
btn2_r.grid(row=0, column=1)
monit_state = True
root.mainloop()

使用线程

python3 下 tkinter 的网页监控小程序相关推荐

  1. python3.6小程序_python3.6 tkinter实现屏保小程序

    本文实例为大家分享了python3.6 tkinter实现屏保小程序,供大家参考,具体内容如下 该小程序是在闲着没事的时候,随便写的,就当打发无聊了. 该程序是用python3.6写的,调用了pyth ...

  2. Tkinter超市收银小程序(附源码),看完这一篇你还不会Tkinter吗,快来试试吧

    Tkinter超市收银小程序 引言 超市收银小程序,一个小例子快速上手Tkiner使用,虽然最近有好多实验报告要写,但是我还是给大家写一个小例子,之前就用C.C++,java.特别是C#最好用,做过图 ...

  3. python调用浏览器打开网页_python调用浏览器,实现刷网页浏览小程序!

    Python 和放大镜的二进制代码 私信小编007即可自动获取大量Python视频教程以及各类PDF! python 打开浏览器,可以做简单的刷网页的小程序 and 其他有想象力的程序.不过仅供学习, ...

  4. 网页+微信小程序UI设计及前端开发(第二周)

    日期 工作内容 2020年8月12日 网页前端架构,素材查找,小程序前端架构 2020年8月13日 网页.小程序页面完善,提交网页与小程序前端文件 文章目录 一.网页 (一)页头 (1)logo及导航 ...

  5. linux模拟cpu过载,linux下模拟CPU占用100%小程序

    linux下模拟CPU占用100%小程序 来源:https://blog.csdn.net/lin434406218/article/details/54694900 一.单个核100% 代码kill ...

  6. 微信开放平台 帐号管理 绑定在同一个开放平台帐号下的公众号及小程序让用户unionid一致...

    开发十年,就只剩下这套架构体系了! >>>    第三方平台在获得此权限后,可以代替已授权的公众号/小程序创建开放平台帐号或进行绑定/解绑操作. 绑定在同一个开放平台帐号下的公众号及 ...

  7. TaskMan(任务侠),进程监控小程序

    TaskMan 介绍 TaskMan(任务侠),进程监控小程序,监控到任务死掉后会自动重新打开,程序自带GUI界面,方便设置,并且可以通过控制台命令启动,程序命令简单,非常容易上手. 软件架构 GUI ...

  8. 微信用户绑定java实例_微信开放平台 帐号管理 绑定在同一个开放平台帐号下的公众号及小程序让用户unionid一致...

    第三方平台在获得此权限后,可以代替已授权的公众号/小程序创建开放平台帐号或进行绑定/解绑操作. 绑定在同一个开放平台帐号下的公众号及小程序,用户unionid一致.开发者可调用"获取用户基本 ...

  9. 提高微信小程序的应用速度的常见方式有哪些? 小程序怎么实现下拉刷新? 简述微信小程序原理? 小程序的发布流程(开发流程)分析下微信小程序的优劣势?小程序授权登录流程? 小程序支付如何实现

    小程序部分常见面试题 提高微信小程序的应用速度的常见方式有哪些? 提高页面加载速度 用户行为预测 减少默认data的大小 组件化方案 分包预下载 小程序与原生App相比优缺点? 优点: 基于微信平台开 ...

  10. Fiddler爬取抓包(网页及小程序包)

    前言: 关于抓包的工具比较多,如: Charles : Fiddler  : Wireshark:BurpSuite (常用).今天演示讲解Fiddler抓包工具. 下载Fiddler Classic ...

最新文章

  1. Lock 与 InterruptedException
  2. 深度学习时代的图模型,清华发文综述图网络
  3. python三大神器===》装饰器
  4. defer 的前世今生
  5. IDEA 2020.3 连接mysql数据库报错解决
  6. pandas python2.3版本_python-像以前的版本一样,将pandas 0.13.0“ pri...
  7. Graham Scan凸包算法
  8. Python中用format函数格式化字符串的用法(2.7版本讲解哦!)
  9. 禁用使用未签名驱动导致的windows 7自动修复
  10. 仿链家地图找房_iOS地图找房(类似链家、安居客等地图找房)
  11. 酷派5890刷recovery详细教程
  12. Secure CRT 最大显示行数的设置
  13. gcc编译C++ 符号名解码 c++filt demangle
  14. 谷物割捆一体农用车系统整体设计
  15. Java 使用poi自定义下载Excel模板
  16. oracle如何恢复删除的表
  17. 设计分享|基于单片机的矩阵电子琴(汇编)
  18. LoRa模块无线通信技术在距离测量和定位上的应用——东胜物联
  19. 黑苹果html5,黑苹果配置必备神器 Clover Configurator v5.10.0.0 官方中文原版
  20. linux 程序crash 调试、原因分析及问题定位

热门文章

  1. C# RestSharp的http连接
  2. python画二元一次函数图像_Python实现的拟合二元一次函数功能示例【基于scipy模块】...
  3. python字典实例简单代码_python编程入门九:字典实例代码
  4. MATLAB基本语法速成
  5. ps自定义(新建)图框工具
  6. 【ANSYS命令流】通用后处理技术(三):列表显示结果及输出TXT文本(实例)
  7. 基于74系列芯片的红绿灯设计
  8. Swing-图表(扇形图的绘制)
  9. 启动计算机需要配置,Win10 office2007每次启动都要配置的解决方案
  10. 2021级南航计算机专硕829备考记录