大家好,小编在这里要分享,python下雨动画特效 python特效代码,现在让我们一起来看看吧!
大家好,本文将围绕怎么用python写小程序展开说明,python入门小程序编写是一个很多人都想弄明白的事情,想搞清楚python怎么做小程序需要先了解以下几个事情Python基本运算符号。
大家好,给大家分享一下python做微信小程序开发,很多人还不知道这一点。下面详细解释一下python练手项目。现在让我们来看看!
利用python中的tkinter来开发自己的小程序或小工具之查询数据库并返回和导出查询结果
本人也是python小猫,各位大佬不要喷,毕竟咱不是专业的开发的,只是为了偷懒,写一下自己的小程序,如果大佬可以帮自己完善一下的话,自己也是很高兴的。
这个工具可以用来干什么如果你需要经常的从数据库里面提取数据,那么他可以帮你实现如果你热爱爬虫的话,需要美化一下操作界面的话,那么你可能需要他如果你想逗你女朋友开心的话,那么你可能值得拥有他等等等等等Python创意编程比赛作品——名侦探柯南:真相只有一个!。。。
先来看看效果
建议一定要看这个效果图哈,否则,你到下面的代码就是一脸懵
python运维小工具(1)
1. 思路
思路是非常重要的,有一个好的思路,能让自己事半功倍
我的实例工具,思路如下
利用tkinter来构建基本的工具框架,也就是程序或者工具UI界面(小编是找了张A4纸,用铅笔花出来的,\哭)需要具体能实现功能的python代码,需要镶嵌到框架中建立个测试环境,测试一下看看效果如何
2. 实操
先引入我们需要的模板
#!/usr/bin/env python
# coding:gbk
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
import tkinter as tk :这个是今天的主角import tkinter.messagebox :这个是弹出来的那个框口import pymssql:这个是连接数据库用的,我这边的是sql server数据库import datetime:这个是获取当前时间用的,主要是一个导出文件的时候命名作用import openpyxl:这个是操作execl用的,把查询结果写入到execl表中import split:这个是字符切割用的import time:这个用来时间延长的。time.sleepimport os:这个是获取当前程序运行路径的,方便放置或者提醒文件保存位置import sys:这个好像没用到,先写上吧
再构建出我们需要的大框
也就是我们外面用到的大框
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ") #这个就是大框左上角的文字显示
root.geometry("950x300") #这个是框的大小
root.mainloop() # 进入消息循环
效果如下:
再构建出里面的小框
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ") #这个就是大框左上角的文字显示
root.geometry("950x300") #这个是框的大小
#当前不会显示出来这个框,因为框里面没有内容
denglu = tk.LabelFrame(root,text="登录",padx=10,pady=5)
(row=0,sticky='N',column=0,padx=10,pady=10)
#当前不会显示出来这个框,因为框里面没有内容
jg = tk.LabelFrame(root,text="查询结果",padx=10,pady=10)
(row=0,rowspan=2,column=1,sticky='N',padx=10,pady=10)
root.mainloop() # 进入消息循环
效果和上面的一样:
再给左边的这个框里面添加内容
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ") #这个就是大框左上角的文字显示
root.geometry("950x300") #这个是框的大小
denglu = tk.LabelFrame(root,text="登录",padx=10,pady=5)
(row=0,sticky='N',column=0,padx=10,pady=10)
##下面的这四行对应的下面的效果图看,比较容易理解
tk.Label(denglu,text= "数据库ip:").grid(row=0,column=0)
tk.Label(denglu,text= "数据库端口:").grid(row=1,column=0)
tk.Label(denglu,text= "数据库账户:").grid(row=2,column=0)
tk.Label(denglu,text= "数据库密码:").grid(row=3,column=0)
jg = tk.LabelFrame(root,text="查询结果",padx=10,pady=10)
(row=0,rowspan=2,column=1,sticky='N',padx=10,pady=10)
root.mainloop() # 进入消息循环
效果图:
再给这四个标签添加后面的输入框
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ") #这个就是大框左上角的文字显示
root.geometry("950x300") #这个是框的大小
denglu = tk.LabelFrame(root,text="登录",padx=10,pady=5)
(row=0,sticky='N',column=0,padx=10,pady=10)
tk.Label(denglu,text= "数据库ip:").grid(row=0,column=0)
tk.Label(denglu,text= "数据库端口:").grid(row=1,column=0)
tk.Label(denglu,text= "数据库账户:").grid(row=2,column=0)
tk.Label(denglu,text= "数据库密码:").grid(row=3,column=0)
##下面就是添加输入框部分
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
e1 = tk.Entry(denglu, textvariable=v1)
e2 = tk.Entry(denglu, textvariable=v2)
e3 = tk.Entry(denglu, textvariable=v3)
e4 = tk.Entry(denglu, textvariable=v4, show="*")
(row=0, column=1, padx=10, pady=5)
(row=1, column=1, padx=10, pady=5)
(row=2, column=1, padx=10, pady=5)
(row=3, column=1, padx=10, pady=5)
###
jg = tk.LabelFrame(root,text="查询结果",padx=10,pady=10)
(row=0,rowspan=2,column=1,sticky='N',padx=10,pady=10)
root.mainloop() # 进入消息循环
效果如下:
输入框里面可以输入内容了,那我们需要将用户输入到框中的内容,get出来
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ") #这个就是大框左上角的文字显示
root.geometry("950x300") #这个是框的大小
denglu = tk.LabelFrame(root,text="登录",padx=10,pady=5)
(row=0,sticky='N',column=0,padx=10,pady=10)
tk.Label(denglu,text= "数据库ip:").grid(row=0,column=0)
tk.Label(denglu,text= "数据库端口:").grid(row=1,column=0)
tk.Label(denglu,text= "数据库账户:").grid(row=2,column=0)
tk.Label(denglu,text= "数据库密码:").grid(row=3,column=0)
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
e1 = tk.Entry(denglu, textvariable=v1)
e2 = tk.Entry(denglu, textvariable=v2)
e3 = tk.Entry(denglu, textvariable=v3)
e4 = tk.Entry(denglu, textvariable=v4, show="*")
(row=0, column=1, padx=10, pady=5)
(row=1, column=1, padx=10, pady=5)
(row=2, column=1, padx=10, pady=5)
(row=3, column=1, padx=10, pady=5)
##创建一个def ,因为下面需要个按钮来触发他
def ceshi_sql():
#利用异常判断,如果能正常连接则提示测试连接成功
try:
conn = pymssql.connect((), (),(),())
#输入框里面取值就在这里,()
tk.messagebox.askokcancel("提示","测试连接成功") #弹出提示框的功能
conn.close() #断开数据库连接
except Exception as e:
##如果不能连接则将异常e抛出
tk.messagebox.askokcancel("提示", e)
## 增加两个按钮,一个连接测试,一个退出,注意按钮触发的是command后面的def函数,这里没有()哈,注意
tk.Button(denglu, text="连接测试", width=10, command=ceshi_sql).grid(row=4, column=0, sticky='W', padx=10, pady=5) # W左边
tk.Button(denglu, text="退出", width=10, ).grid(row=4, column=1, sticky='E', padx=10, pady=5) # E右边
jg = tk.LabelFrame(root,text="查询结果",padx=10,pady=10)
(row=0,rowspan=2,column=1,sticky='N',padx=10,pady=10)
root.mainloop() # 进入消息循环
效果图:
看到了这里相信大家也是不是感觉非常简单可呢,下面小编就把第二个框里面的内容结合源码一起讲了哈
整体源码:
#!/usr/bin/env python
# coding:gbk
import tkinter as tk
import tkinter.messagebox
import pymssql
import datetime
import openpyxl
import split
import time
import os
import sys
root = () # 创建窗口对象的背景色
root.title("Voc --统计长期离线企业小助手 v1.10 ")
root.geometry("950x300")
#第一个框开始
denglu = tk.LabelFrame(root,text="登录",padx=10,pady=5)
(row=0,sticky='N',column=0,padx=10,pady=10)
tk.Label(denglu,text= "数据库ip:").grid(row=0,column=0)
tk.Label(denglu,text= "数据库端口:").grid(row=1,column=0)
tk.Label(denglu,text= "数据库账户:").grid(row=2,column=0)
tk.Label(denglu,text= "数据库密码:").grid(row=3,column=0)
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
e1 = tk.Entry(denglu, textvariable=v1)
e2 = tk.Entry(denglu, textvariable=v2)
e3 = tk.Entry(denglu, textvariable=v3)
e4 = tk.Entry(denglu, textvariable=v4, show="*")
(row=0, column=1, padx=10, pady=5)
(row=1, column=1, padx=10, pady=5)
(row=2, column=1, padx=10, pady=5)
(row=3, column=1, padx=10, pady=5)
def ceshi_sql():
try:
conn = pymssql.connect((), (),(),())
tk.messagebox.askokcancel("提示","测试连接成功")
conn.close()
except Exception as e:
tk.messagebox.askokcancel("提示", e)
tk.Button(denglu, text="连接测试", width=10, command=ceshi_sql).grid(row=4, column=0, sticky='W', padx=10, pady=5) # W左边
tk.Button(denglu, text="退出", width=10, ).grid(row=4, column=1, sticky='E', padx=10, pady=5) # E右边
###第二个框的开始
###创建框
jg = tk.LabelFrame(root,text="查询结果",padx=10,pady=10)
(row=0,rowspan=2,column=1,sticky='N',padx=10,pady=10)
###引入一个文本框text,设置他的大小为width=80,height=15
(jg,width=80,height=15)
###创建一个滚动条,因为要显示的内容太多,没有滚动条,看不全部
scroll=tk.Scrollbar(jg)
(row=0,column=1)
(row=0,column=0)
#创建是上下滚动的条:y
scroll.config(command=text.yview)
text.config()
#创建一个def,让他可以被抹个按钮触发
def chaxun():
sql = 'select * from ceshi'
##利用异常处理
try:
#主要实现的功能,就是到一个库里面执行一个sql语句,如果大家有需要可以自己设置
chaxun_conn = pymssql.connect((), (),(),(), database='ya',charset='cp936')
chaxun_conn.autocommit(True)
cursor = chaxun_conn.cursor()
#text文本域里面最开始显示空白
text.delete(0.0, )
#执行sql语句
cursor.execute(sql)
#拿到语句查询结果
jieguo = cursor.fetchall()
cursor.close() #连接完一定要断开连接哈,数据库最怕没有这个
###
###下面的是一个execl的写入,可以自己根据自己的实际情况改写
wb = openpyxl.Workbook()
#sheet命名为长期离线企业数据统计'
ws = wb.create_sheet('长期离线企业数据统计')
#execl里面第一行第一列显示“字段名1”
(row=1, column=1).value = "字段名1"
#execl里面第一行第二列显示“字段名2”
(row=1, column=2).value = "字段名2"
#execl里面第一行第三列显示“字段名3”
(row=1, column=3).value = "字段名3"
(row=1, column=4).value = "字段名4"
(row=1, column=5).value = "字段名5"
(row=1, column=6).value = "字段名6"
(row=1, column=7).value = "字段名7"
(row=1, column=8).value = "字段名8"
(row=1, column=9).value = "字段名9"
(row=1, column=10).value = "字段名10"
x = 1
for i in jieguo:
x+=1
y = 1
ii = str(i) + '\n'
text.insert(tk.INSERT,ii) #这个是写入到文本域里面
for n in i:
(row=x, column=y).value = n
y+=1
else:
text.insert(,'===================查询结束====================\n')
today = ((str(())).split('.')[0]).replace(':', "-")
name = today + '长期离线企业数据.xlsx'
##保存execl
(name)
time.sleep(2)
##获取当前路径
pwd = os.getcwd()
file_pwd = pwd + '\\' + name
mess = '导出的文件保存于:' + file_pwd
##提示出,文件被保存的位置,方便查找文件
tk.messagebox.askokcancel("提示", mess)
except Exception as e:
text.delete(0.0, )
jieguo = '\n======================不是有效的查询,请先【连接测试】======================='
text.insert(tk.INSERT, jieguo)
text.insert(tk.INSERT, e)
#关联
#创建一个函数,等待按钮触发
def show():
tk.messagebox.askokcancel("提示", '功能在进一步的确认中......')
#创建一个按钮,触发chaxun函数,也就是上面的def函数
tk.Button(root, text="开始查询并导出文件", width=20, command=chaxun).grid(sticky='ws',row=1,column=0,padx=30, pady=5) # W左边
tk.Button(root, text="功能待定", width=10, command=show).grid(sticky='es',row=1,column=0, padx=30, pady=5) # W左边
root.mainloop() # 进入消息循环
结束语
小编写的这个程序是固定死的,但是思路是活得,主要是让大家理解一下思路。小编的技术有限,希望大家不要建议,如果大家有什么好的建议,不妨评论出来,大家一起分享一下最后就是希望和大家一起努力,创建更加美好的明天,为社会技术贡献一份自己的力量
原文地址1:https://blog.csdn.net/jaskonyee/article/details/137253391
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099