GUI tkinter数据库

时间:2018-04-13 22:37:22

标签: python database tkinter

我在self.view_records()收到错误消息。我创建了该函数来查询数据库。然后我试图在类中调用该函数来检索数据库并将其显示给GUI。

  

错误:    self.view_records(个体经营)   AttributeError:'产品'对象没有属性' view_records'

from tkinter import*
from tkinter import ttk
import psycopg2
    class products:
       def __init__(self,master):

        self.master=master
        master.title('Store')

        frame= LabelFrame(self.master, text= 'Add new Record')
        frame.grid(row=0,column=1)

        Label(frame,text='Name:').grid(row=1,column=1)
        self.name=Entry(frame)
        self.name.grid(row=1,column=2)

        Label(frame,text='Price:').grid(row=2,column=1)
        self.price=Entry(frame)
        self.price.grid(row=2,column=2)

        ttk.Button(frame,text='Add Record').grid(row=3,column=2)
        self.message=Label(text='',fg='red')
        self.message.grid(row=3,column=0)

        self.tree=ttk.Treeview(height=10,columns=2)
        self.tree.grid(row=4,column=0,columnspan=2)
        self.tree.heading('#0',text='Name',anchor=W)
        self.tree.heading(2, text='Price', anchor=W)

        ttk.Button(text='Delete Record').grid(row=5,column=0)
        ttk.Button(text='Edit Record').grid(row=5, column=1)

        self.view_records()



        def run_query(self,query,parameter={}):
            conn = psycopg2.connect("all db info")
            cur = conn.cursor()
            query_results=cur.execute(query,parameter)
            conn.commit()
            return query_results

        def view_records(self):
            records=self.tree.get_children()
            for element in records:
                self.tree.delete(element)
                query="SELECT * FROM products ORDER BY DESC"
                db_rows=self,run_query(query)
                for row in db_rows:
                    self.tree.insert('',0,text= row[1],values=row[2])





root = Tk()
my_gui = products(root)
root.mainloop()

1 个答案:

答案 0 :(得分:0)

您需要将init函数的内容移到一个上面。它不在课堂上。 init函数。它需要看起来像这样

class products:
   def __init__(self,master):
       self.master=master
       master.title('Store')

       frame= LabelFrame(self.master, text= 'Add new Record')
       frame.grid(row=0,column=1)

       Label(frame,text='Name:').grid(row=1,column=1)
       self.name=Entry(frame)
       self.name.grid(row=1,column=2)

       Label(frame,text='Price:').grid(row=2,column=1)
       self.price=Entry(frame)
       self.price.grid(row=2,column=2)

       ttk.Button(frame,text='Add Record').grid(row=3,column=2)
       self.message=Label(text='',fg='red')
       self.message.grid(row=3,column=0)

       self.tree=ttk.Treeview(height=10,columns=2)
       self.tree.grid(row=4,column=0,columnspan=2)
       self.tree.heading('#0',text='Name',anchor=W)
       self.tree.heading(2, text='Price', anchor=W)

       ttk.Button(text='Delete Record').grid(row=5,column=0)
       ttk.Button(text='Edit Record').grid(row=5, column=1)

       self.view_records()