怎么让最终的数据库结果也呈现为一个界面?

可不可以将最终的结果也由tkinter的界面呈现呢?目前是只能在output打出来



```python

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

另外,我的建库是这样的:

import pymssql
connect = pymssql.connect(host = "127.0.0.1",database = "茶托邦重大店",charset="utf8")  # 建立连接
if connect:
    print("successful connected")
cursor = connect.cursor()   # 创建一个游标对象,python里的sql语句都要通过cursor来执行
cursor.execute("CREATE TABLE 订单 (订单号 INT PRIMARY KEY,下单时间 DATETIME,订单金额 DECIMAL(10, 2))")
cursor.execute("CREATE TABLE 商品详情 (订单号 INT,奶茶名字 VARCHAR(50),数量 INT,PRIMARY KEY (订单号, 奶茶名字),FOREIGN KEY (订单号) REFERENCES 订单(订单号))")
cursor.execute("CREATE TABLE 奶茶 (奶茶名字 VARCHAR(50) PRIMARY KEY,售价 DECIMAL(10, 2),成本 DECIMAL(10, 2))")
cursor.execute("CREATE TABLE 配方 (奶茶名字 VARCHAR(50),糖精 DECIMAL(10, 2),奶茶粉 DECIMAL(10, 2),芋圆 DECIMAL(10, 2),冻冻 DECIMAL(10, 2),椰果 DECIMAL(10, 2),珍珠 DECIMAL(10, 2),脆啵啵 DECIMAL(10, 2),PRIMARY KEY (奶茶名字),FOREIGN KEY (奶茶名字) REFERENCES 奶茶(奶茶名字))")
cursor.execute("CREATE TABLE 财务 (日期 DATE PRIMARY KEY,销售额 DECIMAL(10, 2),成本 DECIMAL(10, 2),利润 DECIMAL(10, 2)) ")
connect.commit()  #提交
cursor.close()  # 关闭游标
connect.close()  # 关闭连接

```

可以,参考:

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7386004
  • 这篇博客也不错, 你可以看下【tkinter】关于绑定动作 ‘<Configure>‘ 后遇到的问题和解决方法
  • 除此之外, 这篇博客: 图书馆借阅系统(应用)的设计与实现中的 Tkinter 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

  • 您还可以看一下 董付国老师的Python可以这样学(第二季:tkinter案例精选)课程中的 单选钮、复选框、组合框、列表框综合运用小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    要在tkinter界面上展示最终的数据库结果,可以按照以下步骤进行操作:

    1. 首先,导入tkinter模块和pandas模块(用于处理数据):
    import tkinter as tk
    import pandas as pd
    
    1. 创建一个tkinter窗口:
    window = tk.Tk()
    window.title("数据库查询结果")
    
    1. 连接数据库并执行查询操作:
    # 假设数据库连接已经建立,cur为游标对象
    sql = 'SELECT * FROM student_base_info'
    cur.execute(sql)
    results = cur.fetchall()
    
    1. 将查询结果转换为DataFrame格式:
    df = pd.DataFrame(results, columns=['id', 'first_name', 'last_name', 'age', 'dept_id'])
    
    1. 创建一个tkinter的Table组件,用于展示数据:
    table = pt.Table(window, dataframe=df)
    table.pack()
    

    注意:在这一步之前,需要先安装pandastable模块,你可以使用以下命令进行安装:

    pip install pandastable
    
    1. 运行tkinter的主循环,显示窗口并展示数据:
    window.mainloop()
    

    这样,就可以在tkinter界面上展示最终的数据库结果了。完整的代码如下:

    import tkinter as tk
    import pandas as pd
    from pandastable import Table as pt
    
    window = tk.Tk()
    window.title("数据库查询结果")
    
    # 连接数据库并执行查询操作
    # 假设数据库连接已经建立,cur为游标对象
    sql = 'SELECT * FROM student_base_info'
    cur.execute(sql)
    results = cur.fetchall()
    
    # 将查询结果转换为DataFrame格式
    df = pd.DataFrame(results, columns=['id', 'first_name', 'last_name', 'age', 'dept_id'])
    
    # 创建一个tkinter的Table组件,用于展示数据
    table = pt.Table(window, dataframe=df)
    table.pack()
    
    # 运行tkinter的主循环,显示窗口并展示数据
    window.mainloop()
    

    注意:以上代码仅为示例,需要根据实际情况进行修改和适配。如果数据库连接、查询操作等部分代码有变动,请根据具体情况进行修改。