Python中tkinter+MySQL实现增删改查
作者:多喝l热水 时间:2024-01-20 06:49:59
一、设置主窗口
# -*- 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.定义增删改查函数
'''main3响应函数'''
def select3(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 配置表汇总 where `站点名称(局向)` like '"+sname+"'")
c = cursor.execute("select * from 配置表汇总 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][0], list_re[i][2],list_re[i][4], list_re[i][14],\
list_re[i][5], list_re[i][9],list_re[i][11], list_re[i][12],\
list_re[i][13]))
tree.grid(column=0,row=1,sticky='NSEW')
con.close()
def insert(root, label1,label2,label3,label4,label5,label6,label7,label8,label9):
net_name = label1.get()
area_name = label2.get()
base_name = label3.get()
belong_name = label4.get()
base_local = label5.get()
base_level = label6.get()
base_num = label7.get()
rural = label8.get()
scene = label9.get()
print('input: ',net_name)
# 由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象
con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True)
cursor=con.cursor()
# SQL 插入语句 里面的数据类型要对应
sql = "INSERT INTO 配置表汇总(`网络类型`,\
`行政区`,`基站名称`,`归属区域`,`基站所处位置具体地址`,\
`基站分级`,`站点名称(局向)`,`是否农村基站`,`二级场景类型`)\
VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % \
(net_name,area_name,base_name,belong_name,base_local,base_level,base_num,rural,scene)
print(sql)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
con.commit()
tkinter.messagebox.showinfo('提示',net_name+'配置汇总表插入成功!')
except:
# 发生错误时回滚
con.rollback()
con.close()
def delete(root,label7):
base_num = label7.get()
print('input: ',base_num)
# 由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象
con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True)
cursor=con.cursor()
# SQL 插入语句 里面的数据类型要对应
sql = "DELETE FROM 配置表汇总 WHERE `站点名称(局向)`='%s'" %(base_num)
print(sql)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
con.commit()
tkinter.messagebox.showinfo('提示',base_num+'配置汇总表删除成功!')
except:
# 发生错误时回滚
con.rollback()
con.close()
2.定义主调用函数
def main3():
monty3 = ttk.LabelFrame(tab3, text='控件示范区3')
monty3.grid(column=0, row=0,sticky='W', padx=8, pady=4)
monty3_1 = ttk.LabelFrame(tab3, text='控件示范区2')
monty3_1.grid(column=0, row=1,sticky='W', padx=4, pady=4)
# 查询结果
tree=ttk.Treeview(monty3_1)#表格
tree["columns"]=("网络类型","行政区","基站名称","归属区域","基站所处位置具体地址",\
"基站分级","站点名称(局向)","是否农村基站","二级场景类型")
tree.column("网络类型",width=50) #表示列,不显示
tree.column("行政区",width=50)
tree.column("基站名称",width=50)
tree.column("归属区域",width=50) #表示列,不显示
tree.column("基站所处位置具体地址",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("归属区域",text="归属区域") #显示表头
tree.heading("基站所处位置具体地址",text="基站所处位置具体地址")
tree.heading("基站分级",text="基站分级")
tree.heading("站点名称(局向)",text="站点名称(局向)") #显示表头
tree.heading("是否农村基站",text="是否农村基站")
tree.heading("二级场景类型",text="二级场景类型")
tree.grid(column=0,row=1,sticky='NSEW')
input_name1 = ttk.Label(monty3, text = '网络类型:').grid(column=0, row=0, sticky='W',pady=5)
label1 = tkinter.StringVar()
entry1 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label1).grid(column=1, row=0, sticky='W')
input_name2 = ttk.Label(monty3, text = '行政区:').grid(column=3, row=0, sticky='W')
label2 = tkinter.StringVar()
entry2 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label2).grid(column=4, row=0, sticky='W')
input_name3 = ttk.Label(monty3, text = '基站名称:').grid(column=0, row=1, sticky='W',pady=5)
label3 = tkinter.StringVar()
entry3 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label3).grid(column=1, row=1, sticky='W')
input_name4 = ttk.Label(monty3, text = '归属区域:').grid(column=3, row=1, sticky='W')
label4 = tkinter.StringVar()
entry4 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label4).grid(column=4, row=1, sticky='W')
input_name5 = ttk.Label(monty3, text = '基站所处位置具体地址:').grid(column=0, row=2, sticky='W',pady=5)
label5 = tkinter.StringVar()
entry5 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label5).grid(column=1, row=2, sticky='W')
input_name6 = ttk.Label(monty3, text = '基站分级:').grid(column=0, row=3, sticky='W',pady=5)
label6 = tkinter.StringVar()
entry6 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label6).grid(column=1, row=3, sticky='W')
input_name7 = ttk.Label(monty3, text = '站点名称(局向):').grid(column=0, row=4, sticky='W',pady=5)
label7 = tkinter.StringVar()
entry7 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label7).grid(column=1, row=4, sticky='W')
input_name8 = ttk.Label(monty3, text = '是否农村基站:').grid(column=0, row=5, sticky='W',pady=5)
label8 = tkinter.StringVar()
entry8 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label8).grid(column=1, row=5, sticky='W')
input_name9 = ttk.Label(monty3, text = '二级场景类型:').grid(column=0, row=6, sticky='W',pady=5)
label9 = tkinter.StringVar()
entry9 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label9).grid(column=1, row=6, sticky='W')
select_button = tkinter.Button(monty3,bg='white',text='查询',width=10,height=1,\
command=lambda :select3(monty3, label7,tree)).grid(column=0, row=7, sticky='W',pady=5)
insert_button = tkinter.Button(monty3,bg='white',text='插入',width=10,height=1,\
command=lambda :insert(monty3,label1,label2,label3,label4,label5,label6,\
label7,label8,label9)).grid(column=1, row=7, sticky='W',padx=5,pady=5)
delete_button = tkinter.Button(monty3,bg='white',text='删除',width=10,height=1,\
command=lambda :delete(monty3, label7)).grid(column=2, row=7, sticky='W',pady=5)
效果如下
来源:https://blog.csdn.net/qq_35350265/article/details/105506728
标签:tkinter,MySQL,增删改查
0
投稿
猜你喜欢
Python中实现输入一个整数的案例
2022-05-28 18:42:21
图文详解在Anaconda安装Pytorch的详细步骤
2022-12-27 10:37:25
go语言制作的zip压缩程序
2024-02-12 21:03:00
Python打印“菱形”星号代码方法
2023-02-05 17:34:42
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2021-07-03 18:21:00
python可视化分析绘制带趋势线的散点图和边缘直方图
2023-08-16 04:10:10
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2024-04-30 10:47:22
golang时间/时间戳的获取与转换实例代码
2023-09-02 06:04:43
axios发送post请求springMVC接收不到参数的解决方法
2023-07-02 16:59:05
Python几种绘制时间线图的方法
2021-08-16 10:43:05
2018年最值得一读的互联网书单
2022-04-13 20:40:37
MySql安装与卸载的详细教程
2024-01-14 09:47:53
使用python实现对元素的长截图功能
2023-11-20 10:27:44
js关于 byval 与 byref 的区别
2007-10-13 10:48:00
全局于网站整体的网页设计
2009-03-27 17:15:00
MySql如何实现远程登录MySql数据库过程解析
2024-01-28 06:47:51
GoLang unsafe包详细讲解
2024-02-02 05:09:46
Python日志:自定义输出字段 json格式输出方式
2022-08-20 01:27:19
python基础教程之自定义函数介绍
2021-09-12 13:10:24
浅谈python中真正关闭socket的方法
2023-11-02 15:41:56