python3 后台维护软件

一、登录(login.py)

from tkinter import ttk
from tkinter import messagebox
import tkinter
import function
import Main

class Login(object):
def __init__(self):
self.root = tkinter.Tk()
#去除windows 边框
self.root.overrideredirect(True)
self.root.title('后台管理系统')
# 禁止改变窗口大小
self.root.resizable(False, False)
# 创建画布
self.canves = tkinter.Canvas(self.root, height=300, width=455)
# 画布插入图片
self.image_file = tkinter.PhotoImage(file='welcome_1_meitu_3.png')
# 加载图片文件  
self.image = self.canves.create_image(0, 0, anchor='nw', image=self.image_file)
# 放置画布(为下端)
self.canves.pack(side='bottom')
# 文本框(用户账号)
self.en = tkinter.StringVar()
self.ent = tkinter.Entry(self.root, textvariable=self.en,width=18)
# 文本框(用户密码)
self.en1 = tkinter.StringVar()
self.ent1 = tkinter.Entry(self.root, textvariable=self.en1,show="*",width=18)
#实例化按钮
self.butt = ttk.Button(self.root, text='登 录', width=8, command=self.login)
self.butt1 = ttk.Button(self.root, text='退 出',width=8, command=self.root.destroy)
# 获取屏幕宽高数据
def center_window(self, w, h):
# 获取屏幕 宽、高
ws = self.root.winfo_screenwidth()
hs = self.root.winfo_screenheight()
# 计算 x, y 位置
x = (ws / 2) - (w / 2)
y = (hs / 2) - (h / 2)
self.root.geometry('%dx%d+%d+%d' % (w, h, x, y))

def login(self):
a = self.en.get() # 获取文本框账号
b = self.ent1.get() # 获取文本框密码
if a == '' and b == '': # 判断文本框内容为空
tkinter.messagebox.showerror('信息', '密码、账号错误')
elif a == '' or b == '': # 判断文本框内容其中一个为空
if a != '' and b == '':
tkinter.messagebox.showerror('信息', '密码错误')
else:
tkinter.messagebox.showerror('信息', '账号不能为空')
elif a != '' and b != '': #判断文本框内容不为空,长度是否符合账号位数
sql = 'select xtyhdm,xtyhmm from xtm08 where xtyhdm=\'%s\'' % (a)
sq = function.da(sql) # 调用function模块的查询函数传入变量sq
if len(sq) > 0:
c = sq[0][0].rstrip() # 去除字符串右边空值
d = sq[0][1].rstrip() # 去除字符串右边空值
if a == c and b == d:
self.root.destroy() # 关闭登陆界面
Main.mai() # 进入主页面
else:
tkinter.messagebox.showerror('信息', '账号或密码错误请重新输入!')
else:
tkinter.messagebox.showerror('信息', '账号或密码错误请重新输入!')
else:
tkinter.messagebox.showerror('信息', '账号或密码错误!')

def gui_arrang(self):
# 第一排表情和文本框
self.ent.place(x=165, y=184)
# 第二排表情和文本框
self.ent1.place(x=165, y=216)
# 按钮
self.butt.place(x=155, y=250) # x=300, y=240
self.butt1.place(x=230, y=250) # x=105, y=235

def main():
# 实例化类
i = Login()
# 窗口居中
i.center_window(450,300)
# 窗口布局
i.gui_arrang()
# 显示窗口
tkinter.mainloop()

if __name__=="__main__":
main()

------------界面展示-----------

 二、主页面(main.py)

import tkinter
from tkinter import ttk
# import login
class MainPage(object):
def __init__(self):
self.lock1 = 0
self.lock2 = 0
self.lock3 = 0
self.lock4 = 0
self.lock5 = 0
self.lock6 = 0
self.lock7 = 0
#创建主窗口
self.man = tkinter.Tk()
#获取屏幕分辨率宽度
self.w = self.man.winfo_screenwidth() #1366-66=1300
#获取屏幕分辨率高度
self.h = self.man.winfo_screenheight()-70 #768-68=70

#创建Frame
self.frame = tkinter.Frame(self.man,bg='white')
#创建顶端画布
self.lable3 = tkinter.Label(self.man,height=2,bg='LightSkyBlue')
#创建目录树
self.treee = ttk.Treeview(self.frame)
#self.canvas1 = tkinter.Canvas(self.man, width=self.w, height=40, bg='blue')
self.lable1 = tkinter.Label(self.man,text='本系统只限于学习使用',bg='LightSkyBlue',height=2)
#创建notebook
self.tb = ttk.Notebook(self.frame)
self.ysb = ttk.Scrollbar(self.frame, orient='vertical')
self.treee.configure(yscroll=self.ysb.set)
self.treee.heading('#0', text='菜单栏', anchor='s')
self.t = self.treee.insert('', 'end',text='查询',open=True)
self.treee.bind('<<TreeviewSelect>>', self.func)
def ni(self):
f=['优惠券查询','促销查询','优惠券使用信息','优惠券归属','修改优惠券状态','促销方案查询','积分插入']
for i in f:
self.treee.insert(self.t,'end',text=i,open=False)
def func(self,event):
select = self.treee.selection()
select = select[0]
if select=='I002' and self.lock1==0:
root = tkinter.Frame(self.tb, bg='white')
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='确定')
but.grid(row=1, column=4)

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)
self.tb.add(root,text='优惠券查询')
self.lock1=1
if select=='I003' and self.lock2==0:
root = tkinter.Frame(self.tb, bg='white')
label=tkinter.Label(root,text='促销查询',font=('黑体', 20))
label.grid(row=0, columnspan=5)

label1 = tkinter.Label(root, text='条码:')
label1.grid(row=1, column=0)

label2 = tkinter.Label(root, text='款号:')
label2.grid(row=1, column=2)

entry = tkinter.Entry(root, text='条码')
entry.grid(row=1, column=1)

entry1 = tkinter.Entry(root, text='款号:')
entry1.grid(row=1, column=3)

Button = tkinter.Button(root, text='查询')
Button.grid(row=1, column=4)

tree = ttk.Treeview(root,
columns=['款号', '店铺', '促销代码', '起始日期', '终止日期', '促销描述', '是否包含促销产品', '录入人员', '录入日期',
'审核人员', '审核日期'], show='headings')
tree['columns'] = (
'款号', '店铺', '促销代码', '起始日期', '终止日期', '促销描述', '是否包含促销产品', '录入人员', '录入日期', '审核人员', '审核日期')
tree['height'] = 15
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.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.column('审核日期', width=100, anchor='center')
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.heading('审核人员', text='审核人员')
tree.heading('审核日期', text='审核日期')
tree.grid(row=2, columnspan=5)
self.tb.add(root, text='促销查询')
self.lock2=1
if select=='I004' and self.lock3==0:
self.lable=tkinter.Label(text='欢迎登陆!',fg='black')
self.tb.add(self.lable,text='优惠券使用信息',fg='black')
self.lock3=1
if select=='I005' and self.lock4==0:
self.lable=tkinter.Label(text='欢迎登陆!',fg='black')
self.tb.add(self.lable,text='优惠券归属')
self.lock4=1
if select=='I006' and self.lock5==0:
self.lable=tkinter.Label(text='欢迎登陆!',fg='black')
self.tb.add(self.lable,text='修改优惠券状态')
self.lock5=1
if select=='I007' and self.lock6==0:
self.lable=tkinter.Label(text='欢迎登陆!',fg='black')
self.tb.add(self.lable,text='促销方案查询')
self.lock6=1
if select=='I008' and self.lock7==0:
self.lable=tkinter.Label(text='欢迎登陆!',fg='black')
self.tb.add(self.lable,text='积分插入')
self.lock7=1


def mi(self):
# 更改主窗口图标显示
self.man.iconbitmap('favicon.ico')
self.man.title('后台维护软件V1.1')
self.man.state("zoomed")#最大化
self.lable3.pack(anchor='n',fill='x')#side='top'
self.frame.pack(anchor='center',fill='both',expand='yes')
self.lable1.pack(anchor='s', fill='x')#side='bottom'
self.treee.pack(side='left',anchor='w',fill='y')
self.ysb.pack(side='left',anchor='w',fill='y') # side='left'
self.tb.pack(side='right',expand='yes',fill='both')
#self.canvas1.pack(side='bottom')


# 去除windows 边框
#self.man.overrideredirect(True)
# 禁止改变窗口大小
#获取屏幕 宽、高。布置主页面
#def window_(self):
#self.man.geometry('%dx%d+%d+%d' % (self.w, self.h,0,0))
#self.man.wm_attributes('-topmost', 1)
#self.man.resizable(False, False)

def mai():
a=MainPage()
# a.window_()
a.ni()
a.mi()

tkinter.mainloop()

if __name__=="__main__":
mai()

三、function.py

from tkinter import ttk
from tkinter import messagebox
import _mssql
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)

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()

猜你喜欢

转载自www.cnblogs.com/sheshidu/p/11695922.html