目录
一、设置主窗口
# -*- coding: utf-8 -*-
import tkinter
from tkinter import ttk
import pymysql
# 导入消息对话框子模块
import tkinter.messagebox
# 创建主窗口
root = tkinter.Tk()
root.title('告警查询')
# 设置窗口大小
root.minsize(500,500)
tabControl = ttk.Notebook(root)
tab1 = ttk.Frame(tabControl) # Create a tab
tabControl.add(tab1, text='铁塔订单查询') # Add the tab
tab2 = ttk.Frame(tabControl) # Add a second tab
tabControl.add(tab2, text='告警详细查询') # Make second tab visible
tab3 = ttk.Frame(tabControl) # Add a third tab
tabControl.add(tab3, text='配置汇总表') # Make second tab visible
tabControl.pack(expand=1, fill="both")
二、定义函数
1.定义查询函数
'''告警详情查询按钮响应函数'''
def select2(root, label,tree):
sname = label.get()
print('input: ',sname)
#1.由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象
con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True)
cursor=con.cursor()
print("select * from a高频级告警表 where `站点名称(局向)` like '"+sname+"'")
c = cursor.execute("select * from a高频级告警表 where `站点名称(局向)` like '"+sname+"'")
#2.将查询结果保存到list_re
list_re=cursor.fetchall()
print('result: ', list_re)
if len(list_re) <= 0:
tkinter.messagebox.showinfo('提示',sname+'告警信息不存才!')
else:
print('result_name: ', list_re[0][0])
#3.向tree写入数据
for i in range(len(list_re)):
tree.insert('', i, text=i ,values=(list_re[i][19], list_re[i][21],list_re[i][15], list_re[i][18],\
list_re[i][6], list_re[i][41],list_re[i][7], list_re[i][13]))
tree.grid(column=0,row=1,sticky='NSEW')
con.close()
2.定义主调用函数
def main2():
# 1.tab2窗口中划分2个子窗口
monty2 = ttk.LabelFrame(tab2, text='控件示范区2')
monty2.grid(column=0, row=0, sticky='W',padx=8, pady=4)
monty2_1 = ttk.LabelFrame(tab2, text='控件示范区2')
monty2_1.grid(column=0, row=1,sticky='W', padx=4, pady=4)
# 2. 设置查询结果显示的子窗口
tree=ttk.Treeview(monty2_1)#表格
tree["columns"]=("站点名称(局向)","告警对象名称","告警对象类型","告警对象ID","告警码",\
"告警编号","发生时间","告警恢复时间")
tree.column("站点名称(局向)",width=50) #表示列,不显示
tree.column("告警对象名称",width=50)
tree.column("告警对象类型",width=50)
tree.column("告警对象ID",width=50) #表示列,不显示
tree.column("告警码",width=50)
tree.column("告警编号",width=50) #表示列,不显示
tree.column("发生时间",width=50)
tree.column("告警恢复时间",width=50)
tree.heading("站点名称(局向)",text="站点名称(局向)") #显示表头
tree.heading("告警对象名称",text="告警对象名称")
tree.heading("告警对象类型",text="告警对象类型")
tree.heading("告警对象ID",text="告警对象ID") #显示表头
tree.heading("告警码",text="告警码")
tree.heading("告警编号",text="告警编号") #显示表头
tree.heading("发生时间",text="发生时间")
tree.heading("告警恢复时间",text="告警恢复时间")
tree.grid(column=0,row=1,sticky='NSEW')
# 3.设置查询条件的子窗口
input_name1 = ttk.Label(monty2, text = '站点名称(局向):').grid(column=0, row=0, sticky='W',pady=5)
label1 = tkinter.StringVar()
entry1 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label1).grid(column=1, row=0, sticky='W')
input_name2 = ttk.Label(monty2, text = '告警对象名称').grid(column=3, row=0, sticky='W')
label2 = tkinter.StringVar()
entry2 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label2).grid(column=4, row=0, sticky='W')
input_name3 = ttk.Label(monty2, text = '告警对象类型:').grid(column=0, row=1, sticky='W',pady=5)
label3 = tkinter.StringVar()
entry3 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label3).grid(column=1, row=1, sticky='W')
input_name4 = ttk.Label(monty2, text = '告警对象ID').grid(column=3, row=1, sticky='W')
label4 = tkinter.StringVar()
entry4 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label4).grid(column=4, row=1, sticky='W')
input_name5 = ttk.Label(monty2, text = '告警码:').grid(column=0, row=2, sticky='W',pady=5)
label5 = tkinter.StringVar()
entry5 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label5).grid(column=1, row=2, sticky='W')
input_name6 = ttk.Label(monty2, text = '发生时间:').grid(column=0, row=3, sticky='W',pady=5)
label6 = tkinter.StringVar()
entry6 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label6).grid(column=1, row=3, sticky='W')
# entry = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label).grid(column=2, row=3, sticky='W',padx=15)
input_name7 = ttk.Label(monty2, text = '告警恢复时间:').grid(column=0, row=4, sticky='W',pady=5)
label7 = tkinter.StringVar()
entry7 = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label7).grid(column=1, row=4, sticky='W')
# entry = tkinter.Entry(monty2,bg='#ffffff',width=20,textvariable=label).grid(column=2, row=4, sticky='W',padx=15)
# 4.点击按钮调用查询函数
select_button = tkinter.Button(monty2,bg='white',text='查询',width=10,height=1,\
command=lambda :select2(monty2, label1,tree)).grid(column=3, row=4, sticky='W',padx=5)