如何在Python的tkinter的scrolledText小工具中显示数据库中的数据?

2024-10-04 05:33:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我为学生管理系统创建了GUI,在其中添加了view按钮,每次点击都会显示存储在学生表中的数据,但是当再次点击时,不会只显示一次记录,而是多次显示记录。 !it is picture when clicked on view button]1

学生管理系统的图形用户界面

from tkinter import *
from tkinter import messagebox
from tkinter import scrolledtext
root = Tk()
root.title("S.M.s")
root.geometry("300x300+300+300")
def f1():
    root.withdraw()
    addst.deiconify()
def f2():
    addst.withdraw()
    root.deiconify()
def f3():  
    root.withdraw()
    viewst.deiconify()
    import cx_Oracle
    con = None
    cursor = None
    try:
        con = cx_Oracle.connect("system/abc123")

        cursor = con.cursor()
        sql = "select * from student"
        cursor.execute(sql)
        data = cursor.fetchall()
        msg = ""
        for d in data:
            msg = msg + "r: " +str(d[0]) +" n: "+ d[1] + "\n"
            stData.insert(INSERT,msg)
    except cx_Oracle.DatabaseError as e:
        messagebox.showerror("Error window" ,e)

    finally:
        if cursor is not None:
            cursor.close()
        if con is not None:
            con.close()



def f4():
    viewst.withdraw()
    root.deiconify()
def f5():
    import cx_Oracle
    con = None
    cursor = None

    try:
        con = cx_Oracle.connect("system/abc123")
        rno = int(entRno.get())
        name = entName.get()
        cursor = con.cursor()
        sql = "insert into student values('%d','%s')"
        args = (rno,name)
        cursor.execute(sql % args)
        con.commit()
        msg = str(cursor.rowcount) + "records inserted "
        entRno.delete(0,END)
        entName.delete(0,END)
        entName.focus()
    except cx_Oracle.DatabaseError as e:
        messagebox.showerror("Error window" ,e)
        con.rollback()
    finally:
        if cursor is not None:
            cursor.close()
        if con is not None:
            con.close()

btnAdd = Button(root,text = "Add",font=("arial",18,"bold"),width = 10,command= f1)
btnView = Button(root,text="View",font = ("arial",18,"bold"),width =10,command = f3)

btnAdd.pack(pady=10)
btnView.pack(pady=10)

addst = Toplevel(root)
addst.title("Add s")
addst.geometry("400x300+300+200")
addst.withdraw()

lblRno = Label(addst,text = "enter rno",font = ("arial",18,"bold"))
entRno = Entry(addst,bd =5,font =("arial",18,"bold"))
lblName = Label(addst,text = "enter name",font=("arial",18,"bold"))
entName = Entry(addst,bd=5,font=("arial",18,"bold"))
btnAddSave= Button(addst,text = "Save",font = ("arial",18,"bold"),command = f5)
btnAddBack = Button(addst,text = "Back",font = ("arial",18,"bold"),command = f2)
lblRno.pack(pady = 5)
entRno.pack(pady=5)
lblName.pack(pady=5)
entName.pack(pady=5)
btnAddSave.pack(pady=5)
btnAddBack.pack(pady=5)

viewst = Toplevel(root)
viewst.title("View S")
viewst.geometry("400x300+300+200")
viewst.withdraw()

stData= scrolledtext.ScrolledText(viewst,width=40,height=10)
btnViewBack = Button(viewst,text = "Back",font = ("arial",18,"bold"),command = f4)

stData.pack()
btnViewBack.pack()


root.mainloop()

Tags: textnonerootconcursorpackoraclefont