我在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()
答案 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()