运用了Tkinter,做数据库任务,但是为什么不能建立一个可视化界面
我学的不好,求指导迷津
附上代码:
from tkinter import ttk
import pymssql
import tkinter as tk
import tkinter.messagebox
#奶茶的添加
def kabb():
# 连接数据库
connect = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8") # 建立连接
# 创建光标
cursor = connect.cursor()
# 编写SQL语句
sql4 = "INSERT INTO 奶茶 (奶茶名字, 售价,成本)VALUES('%s','%.2f','%.2f')" % (v7.get(), v8.get(),v9.get())
# 执行SQL语句,并且输出完成提示信息,否则回滚
try:
cursor.execute(sql4)
connect.commit()
tkinter.messagebox.showinfo("提示", "数据添加成功")
except:
connect.rollback()
tkinter.messagebox.showinfo("提示", "奶茶名字不存在")
# 关闭数据库连接,防止泄露
cursor.close()
connect.close()
#删除操作
def dele():
connect = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8")
cursor=connect.cursor()
sql5 = "delete from 奶茶 where 奶茶名字='%s'" % (v10.get())
try:
cursor.execute(sql5)
connect.commit()
tkinter.messagebox.showinfo("提示","数据删除成功")
except:
connect.rollback()
tkinter.messagebox.showinfo("提示", "要删除的奶茶不存在")
cursor.close()
connect.close()
#查询奶茶信息
def sele():
connect1 = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8")
cursor = connect1.cursor()
sql6 = "select*from 奶茶 WHERE 奶茶名字='%s'"%(v11.get())
try:
cursor.execute(sql6)
results = cursor.fetchall()
print(results)
except:
return
cursor.close()
connect1.close()
#添加奶茶界面
def Staff_habb():
#构建全集变量,方便上面的函数调用
global window_function
global v7,v8,v9
#生成窗口
window_function=tk.Tk()
#窗口标题
window_function.title("茶托邦管理系统")
#窗口大小
window_function.geometry('400x300')
#生成标签
tk.Label(window_function, text="添加新奶茶", font=("黑体", 20)).grid(row=0,column=1,pady=10)
tk.Label(window_function, text="请输入奶茶名字:").grid(row=1, column=0, padx=20, pady=20)
tk.Label(window_function, text="请输入售价:").grid(row=2, column=0, padx=20, pady=20)
tk.Label(window_function, text="请输入成本:").grid(row=3, column=0, padx=20, pady=20)
# 定义变量记录输入信息
v7 = tk.StringVar()
v8 = tk.StringVar()
v9 = tk.StringVar()
#输入框
entry1 = tk.Entry(window_function, show=None, textvariable=v7).grid(row=1, column=1)
entry2 = tk.Entry(window_function, show=None, textvariable=v8).grid(row=2, column=1)
entry3 = tk.Entry(window_function, show=None, textvariable=v9).grid(row=3, column=1)
#生成按钮
button = tk.Button(window_function, text="添加", command=kabb).place(relx=0.3,rely=0.9)
button2 = tk.Button(window_function, text="返回", command=chaneg_MT).place(relx=0.5,rely=0.9)
#显示窗口
window_function.mainloop()
#删除奶茶界面
def Staff_dele():
global window_function
global v10
window_function=tk.Tk()
window_function.title("茶托邦管理系统")
window_function.geometry('400x250')
tk.Label(window_function, text="删除奶茶", font=("黑体", 20)).grid(row=0,column=1,pady=20)
tk.Label(window_function,text="请输入奶茶名字:").grid(row = 1,column =0,padx=20)
v10 =tk.StringVar()
entry1=tk.Entry(window_function,show=None,textvariable=v10).grid(row = 1,column =1,pady=40)
button = tk.Button(window_function, text="删除", command=dele,anchor = 's').place(relx=0.2,rely=0.7)
button2 = tk.Button(window_function, text="返回", command=chaneg_MT).place(relx=0.4,rely=0.7)
window_function.mainloop()
#查找奶茶信息界面
def Staff_sele():
global window_function
global v11
window_function=tk.Tk()
window_function.title("茶托邦管理系统")
window_function.geometry('600x200')
tk.Label(window_function, text="查找奶茶信息", font=("黑体", 20)).grid(row=0,column=1,pady=20)
tk.Label(window_function,text="请输入奶茶名字:").grid(row = 1,column =0,padx=20)
v11 =tk.StringVar()
entry1=tk.Entry(window_function,show=None,textvariable=v11).grid(row = 1,column =1,pady=20)
button = tk.Button(window_function, text="查找", command=sele).place(relx=0.3,rely=0.8)
button2 = tk.Button(window_function, text="返回", command=chaneg_MT).place(relx=0.5,rely=0.8)
window_function.mainloop()
#添加奶茶界面跳转
def change_gabb():
#销毁画布
window.destroy()
#生成新界面
Staff_habb()
#删除奶茶界面跳转
def change_dele():
window.destroy()
Staff_dele()
#条件查询奶茶界面跳转
def change_sele():
window.destroy()
Staff_sele()
#奶茶界面跳转
def chaneg_MT():
window_function.destroy()
MTpage()
def chan_MT():
from choicepage import choicepage
window.destroy()
choicepage()
#奶茶界面
def MTpage():
global window
window = tk.Tk()
window.title("茶托邦管理系统")
window.geometry('500x450')
#生成画布,销毁后生成新的画布实现跳转
page = tk.Frame(window)
page.pack()
tk.Label(window, text="欢迎使用茶托邦信息管理系统", font=("黑体", 20)).pack(pady=10)
button1 = tk.Button(window, text="删除奶茶信息", command=change_dele).pack(pady=10)
button2 = tk.Button(window, text="添加奶茶信息", command=change_gabb).pack(pady=10)
button3 = tk.Button(window, text="查找奶茶信息", command=change_sele).pack(pady=10)
button4 = tk.Button(window, text="退出", command=chan_MT).pack(pady=10)
window.mainloop()
#主函数生成主界面
if __name__ == '__main__':
MTpage()
另外这个代码就可以运行建立一个界面:
from tkinter import ttk
import pymssql
import tkinter as tk
import tkinter.messagebox
#订单的添加
def kadd():
# 连接数据库
connect = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8") # 建立连接
# 创建光标
cursor = connect.cursor()
# 编写SQL语句
sql1 = "INSERT INTO 订单 (订单号, 下单时间,奶茶名字,数量)VALUES('%d','%s','%s','%d')" % (v1.get(), v2.get(),v3.get(),v4.get())
# 执行SQL语句,并且输出完成提示信息,否则回滚
try:
cursor.execute(sql1)
connect.commit()
tkinter.messagebox.showinfo("提示", "数据添加成功")
except:
connect.rollback()
tkinter.messagebox.showinfo("提示", "订单编号不存在")
# 关闭数据库连接,防止泄露
cursor.close()
connect.close()
#删除操作
def delete():
connect = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8")
cursor=connect.cursor()
sql2 = "delete from 订单 where 订单号='%d'" % (v5.get())
try:
cursor.execute(sql2)
connect.commit()
tkinter.messagebox.showinfo("提示","数据删除成功")
except:
connect.rollback()
tkinter.messagebox.showinfo("提示", "所删除的订单不存在")
cursor.close()
connect.close()
#查询订单信息
def select():
connect1 = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8")
cursor = connect1.cursor()
sql3 = "select*from 订单 WHERE 下单时间='%s'"%(v6.get())
try:
cursor.execute(sql3)
results = cursor.fetchall()
print(results)
except:
return
cursor.close()
connect1.close()
#添加订单界面
def Staff_hadd():
#构建全集变量,方便上面的函数调用
global window_function
global v1,v2,v3,v4
#生成窗口
window_function=tk.Tk()
#窗口标题
window_function.title("茶托邦管理系统")
#窗口大小
window_function.geometry('400x300')
#生成标签
tk.Label(window_function, text="添加新订单", font=("黑体", 20)).grid(row=0,column=1,pady=10)
tk.Label(window_function, text="请输入订单号:").grid(row=1, column=0, padx=20, pady=20)
tk.Label(window_function, text="请输入下单时间:").grid(row=2, column=0, padx=20, pady=20)
tk.Label(window_function, text="请输入奶茶名字:").grid(row=3, column=0, padx=20, pady=20)
tk.Label(window_function, text="请输入数量:").grid(row=4, column=0, padx=20, pady=20)
# 定义变量记录输入信息
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()
#输入框
entry1 = tk.Entry(window_function, show=None, textvariable=v1).grid(row=1, column=1)
entry2 = tk.Entry(window_function, show=None, textvariable=v2).grid(row=2, column=1)
entry3 = tk.Entry(window_function, show=None, textvariable=v3).grid(row=3, column=1)
entry4 = tk.Entry(window_function, show=None, textvariable=v4).grid(row=4, column=1)
#生成按钮
button = tk.Button(window_function, text="添加", command=kadd).place(relx=0.3,rely=0.9)
button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.9)
#显示窗口
window_function.mainloop()
#删除订单界面
def Staff_delete():
global window_function
global v5
window_function=tk.Tk()
window_function.title("茶托邦管理系统")
window_function.geometry('400x250')
tk.Label(window_function, text="删除订单", font=("黑体", 20)).grid(row=0,column=1,pady=20)
tk.Label(window_function,text="请输入订单号:").grid(row = 1,column =0,padx=20)
v5 =tk.StringVar()
entry1=tk.Entry(window_function,show=None,textvariable=v5).grid(row = 1,column =1,pady=40)
button = tk.Button(window_function, text="删除", command=delete,anchor = 's').place(relx=0.2,rely=0.7)
button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.4,rely=0.7)
window_function.mainloop()
#查找订单信息界面
def Staff_select():
global window_function
global v6
window_function=tk.Tk()
window_function.title("茶托邦管理系统")
window_function.geometry('600x200')
tk.Label(window_function, text="查找订单信息", font=("黑体", 20)).grid(row=0,column=1,pady=20)
tk.Label(window_function,text="请输入下单时间:").grid(row = 1,column =0,padx=20)
v6 =tk.StringVar()
entry1=tk.Entry(window_function,show=None,textvariable=v6).grid(row = 1,column =1,pady=20)
button = tk.Button(window_function, text="查找", command=select).place(relx=0.3,rely=0.8)
button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.8)
window_function.mainloop()
#添加订单界面跳转
def change_gadd():
#销毁画布
window.destroy()
#生成新界面
Staff_hadd()
#删除订单界面跳转
def change_delete():
window.destroy()
Staff_delete()
#条件查询订单界面跳转
def change_select():
window.destroy()
Staff_select()
#订单界面跳转
def chaneg_main():
window_function.destroy()
mainpage()
def chan_main():
from choicepage import choicepage
window.destroy()
choicepage()
#订单界面
def mainpage():
global window
window = tk.Tk()
window.title("茶托邦管理系统")
window.geometry('500x450')
#生成画布,销毁后生成新的画布实现跳转
page = tk.Frame(window)
page.pack()
tk.Label(window, text="欢迎使用茶托邦信息管理系统", font=("黑体", 20)).pack(pady=10)
button1 = tk.Button(window, text="删除订单信息", command=change_delete).pack(pady=10)
button2 = tk.Button(window, text="添加订单信息", command=change_gadd).pack(pady=10)
button3 = tk.Button(window, text="查找订单信息", command=change_select).pack(pady=10)
button4 = tk.Button(window, text="退出", command=chan_main).pack(pady=10)
window.mainloop()
#主函数生成主界面
if __name__ == '__main__':
mainpage()
明明是差不多的呀,怎么不一样?
from tkinter import *
import tkinter.font as tf
def btn_click():
text.insert(INSERT,("输入错误,请确定输入值!\n"))
def specialType():
# 调整字体高亮
ft = tf.Font(family='微软雅黑',size=10)
text.tag_config('tag',foreground = 'blue',background='pink',font = ft)
text.insert(INSERT,"您选择的是特情码字典,查询结果如下:\n",'tag')
# enter调用
def btn_click_enter(self):
btn_click()
# 清空消息
def cleartext():
text.delete('0.0', END)
# 创建窗口对象的背景色
root = Tk()
root.title('便捷式一键查询服务系统')
root.geometry('960x700')
# Frame为布局函数
main_frame = Frame(root)
text_frame = Frame(main_frame)
station_frame = Frame(main_frame)
botton_frame = Frame(station_frame)
# 建立列表
l1 = Label(station_frame,text='输入门架,站码,IP,互通,厂商或相关拼音')
#l2 = Label(station_frame,text='')
ipText=Entry(station_frame)
# 字体显示
# ft = tkFont.Font(family='Fixdsys', size=10, weight=tkFont.BOLD)
# pack是加载到窗口
l1.pack(side='left')
ipText.pack(side='left')
ipText['width']=24
#l2.pack(side='left')
'''
两个函数的意义是既能enter运行,又可以点击运行,方便操作,扩大使用
bind绑定enter键
注意里面是return 而不是enter
'''
b = Button(station_frame,text='查询',command=btn_click)
b['width']=4
b['height']=1
b.pack(side='left')
ipText.bind("<Return>", btn_click_enter)
# 消息输入界面
text = Text(text_frame,width = 130, height= 39)
text.pack()
main_frame.pack()
c = Button(text='清空',command=cleartext)
c['width']=4
c['height']=1
c.pack(side='left')
# 第二个函数
d = Button(text='导出excel',command=excelExport)
d['width']=8
d['height']=1
d.pack(side='top')
# 输入框的位置
station_frame.pack(side='top',pady='10')
text_frame.pack()
# 进入消息循环
root.mainloop()
- 您还可以看一下 姜雪伟老师的Python Tkinter窗体讲解课程中的 13窗体交互完整版小节, 巩固相关知识点