from tkinter import ttk
from tkinter import messagebox
import pymssql
import tkinter
import decimal
import time
#定义数据库连接函数
def da(str):
conn = pymssql.connect(host=' 数据库地址',database='数据库名称',user='用户账号',password='用户密码')
cur = conn.cursor()
cur.execute(str)
row = cur.fetchall()
return row
#定义treeview控件子节点数据清空
def dletebutton(tree):
x = tree.get_children()
for item in x:
tree.delete(item)
#定义查询函数
def det():
phone = ent.get()#获取文本框内容传给变量phone 保存
vip = ent1.get()#获取文本框内容传给变量vip保存
tim = (time.strftime('%Y-%m-%d', time.localtime()))#获取当前系统时间以%Y-%m-%d 格式输出
if phone == ''and vip == '':
tkinter.messagebox.showerror('警告:', '手机号码、会员号不能为空')
elif phone == '':
dletebutton(tree)
ent1.delete(0,'end')
sql1 = '''select khm013.khhykh,khm013.xjqbh,xjqms,xjqmz,xfmeje,syqsrq,syjzrq
from khm013 inner join khm17 on khm013.xjqbh=khm17.xjqbh
inner join khm01 on khm013.khhykh=khm01.khhykh
where khxfzt=\'n\' and syjzrq>=\'%s\' and khm013.khhykh=\'%s\'''' % (tim, vip)
a = da(sql1)
for i in a:
tree.insert('', 'end', values=i)
elif vip == '':
dletebutton(tree)
ent.delete(0,'end')
sql2 = '''select khm013.khhykh,khm013.xjqbh,xjqms,xjqmz,xfmeje,syqsrq,syjzrq from
khm013 inner join khm17 on khm013.xjqbh=khm17.xjqbh
inner join khm01 on khm013.khhykh=khm01.khhykh
where khxfzt=\'n\' and syjzrq>=\'%s\' and khm01.khhysj=\'%s\'''' % (tim, phone)
b = da(sql2)
for i in b:
tree.insert('', 'end', values=i)
else:
tkinter.messagebox.showerror('警告:', '手机号码、会员号只能选其一查询')

root = tkinter.Tk()
root.title('优惠券查询')
lab = ttk.Label(root,text='优惠券查询',font=('黑体',20))
lab.grid(row=0,columnspan=5)

lab1 = ttk.Label(root,text='手机号码:')
lab1.grid(row=1,column=0)

ent = ttk.Entry(root,text='手机号码')
ent.grid(row=1,column=1)

lab2 = ttk.Label(root,text='会员号码:')
lab2.grid(row=1,column=2)

ent1 = ttk.Entry(root,text='会员号码')
ent1.grid(row=1,column=3)

but = ttk.Button(root,text='确定',command=det)
but.grid(row=1,column=4)

#使用tkinter编写界面
tree = ttk.Treeview(root,columns=['会员号码','优惠券ID','优惠券描述','优惠券面值','满多少可使用','起始日期','截止日期'],show = 'headings')
tree['columns']=('会员号','优惠券ID','优惠券描述','优惠券面值','满多少可使用','起始日期','截止日期')
tree['height']=15
tree.column('会员号',width=100,anchor='center')
tree.column('优惠券ID',width=100,anchor='center')
tree.column('优惠券描述',width=100,anchor='center')
tree.column('优惠券面值',width=100,anchor='center')
tree.column('满多少可使用',width=100,anchor='center')
tree.column('起始日期',width=100,anchor='center')
tree.column('截止日期',width=100,anchor='center')
tree.heading('会员号',text='会员号')
tree.heading('优惠券ID',text='优惠券ID')
tree.heading('优惠券描述',text='优惠券描述')
tree.heading('优惠券面值',text='优惠券面值')
tree.heading('满多少可使用',text='满多少可使用')
tree.heading('起始日期',text='起始日期')
tree.heading('截止日期',text='截止日期')
tree.grid(row=2,columnspan=5)
root.mainloop()

--------最后界面浏览----------

python3 优惠券查询GUI程序的更多相关文章

  1. 用 PHP-GTK2 做 Win32 GUI 程序

    PHP通常是做为服务器端脚本执行,如果告诉你PHP可以编写普通的GUI程序,你应该很感兴趣.下面介绍的PHP-GTK就是PHP的GUI扩展.GTK是一个业界标准的图形库,具有良好的移植性.如果你用过l ...

  2. 在OSX和Windows版本Docker上运行GUI程序

    看到很多人在Docker问题区讨论:如何在OS X和Windows的Docker上运行GUI程序, 随手记录几个参考资料: https://github.com/docker/docker/issue ...

  3. Python In Action:二、 最小的GUI程序:麻雀虽小,五脏俱全

    Python in Action第二个例子,倒是很简单,却是最基本的GUI程序框架,里面有最基本的实现GUI流程 import wx class MyApp(wx.App): def OnInit(s ...

  4. 客户端GUI程序开发漫谈

    这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水  去年夏天的时候,我用QT做了一个小工具 后来还用QT做了流程设计器 我把程序分享给飞扬青云之后,他甚至搞出来一套QT的皮肤来 说 ...

  5. 教程和工具--用wxPython编写GUI程序的

    wxPython是个很好的GUI库,对底层的C++库进行了封装,调用起来很方便,尤其是操作前台UI界面和后台多线程,两者配合很方便,做GUI程序最难是写界面尤其是布局. 关于wxPython,自己正在 ...

  6. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

  7. J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册)

    J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册) 之前那一版本(http://www.cnblogs.com/rojas/p/4794684.html)没考虑 DLL 注 ...

  8. 使用PyQt来编写第一个Python GUI程序

    原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...

  9. 数独GUI程序项目实现

    数独GUI程序项目实现 导语:最近玩上了数独这个游戏,但是找到的几个PC端数独游戏都有点老了...我就想自己做一个数独小游戏,也是一个不错的选择. 前期我在网上简单地查看了一些数独游戏的界面,代码.好 ...

随机推荐

  1. android LoaderManger加载数据Tip

    要查看LoaderManager的具体介绍请看博客: LoaderManager介绍 使用时发现不管怎么调用getLoaderManager().restartLoader(LOADER_TYPE_Q ...

  2. XLNet看这篇文章就足以!

    文章链接:https://arxiv.org/pdf/1906.08237.pdf 代码链接:英文--https://github.com/zihangdai/xlnet      中文--https ...

  3. 【雕爷学编程】Arduino动手做(51)---触摸按键模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  4. JS的函数和对象一

    1.递归 在函数的内部调用自身,默认是一个无限循环. 2.匿名函数 没有名称的函数  function(){   } (1)创建函数 函数声明 function fn1(){   } 函数表达式 va ...

  5. HTML5新特性-- -定时器

    一.定时器:一次性定时器/周期性定时器 #requestAnimationFrame 智能定时器 #此定时器主要使用范围:动画和游戏中 特点: setTimeout(fn,500); setInter ...

  6. 【学习】Python os模块常用方法 记录

    记录一些工作中常用到的用法 os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, topdown=Ture, onerror=None, follow ...

  7. 【持续更新】springboot相关配置

    @Configuration public class MyWebMvcConfig implements WebMvcConfigurer { //注册了新的访问路径 @Override publi ...

  8. [前端开发]Vue mixin

    两个非常相似的组件,他们的基本功能是一样的,但他们之间又存在着足够的差异性,此时的你就像是来到了一个分岔路口:我是把它拆分成两个不同的组件呢?还是保留为一个组件,然后通过props传值来创造差异性从而 ...

  9. [译]Tus 协议

    原文地址:https://tus.io/protocols/resumable-upload.html 摘要 该协议提供一种基于 HTTP/1.1 和 HTTP/2 机制用于文件断点续传. 核心协议 ...

  10. Java中的集合(十五) Iterator 和 ListIterator、Enumeration

    Java中的集合(十五) Iterator 和 ListIterator.Enumeration 一.Iterator (一).简介 Iterator 是一个接口,它是集合的迭代器.集合可以通过Ite ...