tkinter操作相关代码笔记
from tkinter import *
import datetime
import pymysql
import threading
import openpyxl
from tkinter.filedialog import askdirectory
from tkinter import messagebox as messagebox
def connDb(sql):
conn = pymysql.connect(
host='XXX',
port=3306,
user='XXX',
password='XXX',
charset='utf8',
database='XXX'
)
cursor = conn.cursor()
try:
cursor.execute(sql)
except Exception as e:
print('发生异常:', e)
conn.rollback()
return conn, cursor
def quit(tk):
print('溜了溜了')
tk.quit()
def makeFilename(createTime, endTime, level, ent5):
ent5.delete('0', 'end')
start_list = createTime.split(' ')[0].split('-')
end_list = endTime.split(' ')[0].split('-')
time_tittle = ['年', '月', '日']
res_start = ''
res_end = ''
for i in range(3):
res_start = res_start + start_list[i] + time_tittle[i]
res_end = res_end + end_list[i] + time_tittle[i]
res_name = res_start + '至' + res_end + '的三级和三级以上的事件工单列表'
ent5.insert('end', res_name)
def showDate(entList):
global data
entList[3].delete('1.0', 'end')
entList[3].insert('end', '查询语句为:\n')
entList[4].delete('1.0', 'end')
entList[4].insert('end', '输出查询结果:\n')
createTime = entList[0].get()
endTime = entList[1].get()
level = entList[2].get()
sql = makeSql(createTime, endTime, level)
makeFilename(createTime, endTime, level, entList[5])
print('sql语句为:', sql)
entList[3].insert('end', sql)
entList[4].insert('end', '数据查询中-----------\n\n')
conn, cursor = connDb(sql)
data = list(cursor.fetchall())
if data is []:
entList[4].insert('end', '无数据\n')
else:
entList[4].insert('end', '查询到' + str(len(data)) + '条记录\n\n')
for onedata in data:
entList[4].insert('end', onedata)
entList[4].insert('end', '\n\n')
print(onedata, '\n')
print('结果查询结束!')
entList[4].insert('end', '查询结束!-----------\n')
conn.commit()
cursor.close()
conn.close()
def to_excel(data, save_path):
workbook = openpyxl.Workbook()
workbook_sheet = workbook.active
tittle = [XXX]
workbook_sheet.append(tittle)
for onedata in data:
print(onedata, '\n')
workbook_sheet.append(onedata)
workbook.save(save_path)
workbook.close()
def selectDirectory(ent4):
directory = askdirectory()
print(directory)
ent4.delete('0', 'end')
ent4.insert('end', directory)
def export(ent4, ent5):
global data
directory = ent4.get()
file_name = ent5.get()
save_path = directory+'\\'+file_name+'.xlsx'
print(save_path)
print(data)
to_excel(data, save_path)
exportOK()
def exportOK():
messagebox.showinfo('', '导出完成')
def clear(text1, text2):
text1.delete('1.0', 'end')
text2.delete('1.0', 'end')
text1.insert('end', '查询语句为:\n')
text2.insert('end', '输出查询结果:\n')
def createTk():
global data
nowDate = datetime.datetime.now().strftime('%Y-%m-%d')
tk = Tk()
tk.geometry("730x760+500+100")
tk.title('查询工单')
lab1_text = StringVar()
lab1_text.set('测试')
lab = Label(textvariable=lab1_text, height=2, width=30)
ent1 = Entry()
ent2 = Entry()
ent3 = Entry()
text1 = Text(width=65)
text1.insert('end', '查询语句为:\n')
text2 = Text(height=23, width=102)
text2.insert('end', '输出查询结果:\n')
lab1 = Label(text='开始时间:')
lab2 = Label(text='结束时间:')
lab3 = Label(text='事件等级:')
lab4 = Label(text='文件保存路径:')
lab5 = Label(text='文件命名:')
ent4 = Entry(width=77)
ent4.insert('end', r'C:\Users\Administrator\Desktop')
ent5 = Entry(width=77)
ent5.insert('end', '工单列表')
but4 = Button(text='选择', command=lambda: selectDirectory(ent4))
but5 = Button(text='导出', command=lambda: export(ent4, ent5))
but1 = Button(text='确认', command=lambda: createThread(showDate, [ent1, ent2, ent3, text1, text2, ent5]))
but2 = Button(text='退出', command=lambda: quit(tk))
but3 = Button(text='清空', command=lambda: clear(text1, text2))
lab1.grid(column=0, row=0, padx=5, pady=10, sticky='E')
lab2.grid(column=0, row=1, padx=5, pady=10, sticky='E')
lab3.grid(column=0, row=2, padx=5, pady=10, sticky='E')
ent1.grid(column=1, row=0, padx=5, pady=10, columnspan=2, sticky='E')
ent2.grid(column=1, row=1, padx=5, pady=10, columnspan=2, sticky='E')
ent3.grid(column=1, row=2, padx=5, pady=10, columnspan=2, sticky='E')
but1.grid(column=0, row=3)
but3.grid(column=1, row=3, padx=23, sticky='W')
but2.grid(column=2, row=3)
ent1.insert(0, nowDate + ' 08:30:00')
ent2.insert(0, nowDate + ' 08:30:00')
ent3.insert(0, "'一级', '二级', '三级'")
text1.grid(column=3, row=0, rowspan=4, columnspan=2, padx=5, pady=10, sticky='W')
text2.grid(column=0, row=5, columnspan=7, padx=5, pady=10, sticky='W')
lab4.grid(column=0, row=6, padx=5, pady=10)
ent4.grid(column=1, row=6, columnspan=3, padx=5, pady=10, sticky='W')
but4.grid(column=4, row=6, padx=5, pady=10, sticky='W')
lab5.grid(column=0, row=7, padx=5, pady=10)
ent5.grid(column=1, row=7, columnspan=3, padx=5, pady=10, sticky='W')
but5.grid(column=4, row=7, padx=5, pady=10, sticky='W')
tk.mainloop()
def makeSql(createTime, endTime, level):
print(createTime, endTime, level)
sql = '''
XXX
'''
return sql
def createThread(func, *args):
t = threading.Thread(target=showDate, args=args)
t.setDaemon(True)
t.start()
if __name__ == '__main__':
data = []
createTk()