tkinter+MySQL显示查询结果

目录

一、设置主窗口

二、定义函数

1.定义查询函数

2.定义主调用函数


一、设置主窗口

# -*- 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)

 

  • 8
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您想了解有关使用TkinterMySQL进行交互的信息吗?若是,请继续阅读: Tkinter是Python的标准GUI库,可以用于创建图形用户界面。MySQL是一种流行的关系型数据库管理系统,可以用于存储和管理数据。 要使用TkinterMySQL进行交互,您需要使用Python的MySQL驱动程序,例如MySQL Connector / Python。安装此驱动程序后,您可以在Python代码中使用MySQL连接对象来连接到MySQL数据库,并执行SQL查询和操作。 以下是使用TkinterMySQL进行交互的基本流程: 1. 导入TkinterMySQL Connector / Python模块: ```python import tkinter as tk import mysql.connector ``` 2. 创建Tkinter窗口: ```python root = tk.Tk() root.title("My App") ``` 3. 连接到MySQL数据库: ```python mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) ``` 4. 创建MySQL游标对象: ```python mycursor = mydb.cursor() ``` 5. 执行SQL查询: ```python mycursor.execute("SELECT * FROM mytable") myresult = mycursor.fetchall() ``` 6. 处理查询结果并显示Tkinter窗口中: ```python result_label = tk.Label(root, text=myresult) result_label.pack() ``` 请注意,这只是一个基本示例。在实际应用中,您需要使用其他Tkinter小部件,例如输入框和按钮,以便用户可以输入数据并执行操作。此外,您需要编写更复杂的SQL查询和操作来满足您的应用程序需求。 希望这可以帮助您入门TkinterMySQL的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值