繁体   English   中英

尝试用Python制作一个小程序时,我得到一个:AttributeError:模块'backend'没有属性'insert'

[英]While trying to make a small program in Python, I am getting an: AttributeError: module 'backend' has no attribute 'insert'

我正在尝试编写一个小程序以在工作中使用。 看起来像这样:

在此处输入图片说明

如您所见,有两个下拉菜单。 单击菜单上的一个按钮时,填写其他两个条目(Korte beschrijving,datum)并单击Voeg事件脚趾(添加新事件),则应将其另存为数据库中的一个条目。 我猜有些事情不起作用,并且出现两个错误:

首先我得到了:“选项菜单没有属性获取”错误。 然后我做了两个功能:

def drop_down_soort():
soort.get()
window.quit()

def drop_down_user():
user.get()
window.quit()

现在我收到一个新错误:

这是完整的代码:前端和后端+错误。

from tkinter import *
import backend

def alle_incidenten():
   tekst_vak.delete(0,END)
   for row in backend.alle():
   tekst_vak.insert(END,row)

def drop_down_soort():
   soort.get()
   window.quit()

def drop_down_user():
   user.get()
   window.quit()

def voeg_toe():
   backend.voeg_toe(drop_down_soort.get(),drop_down_user.get(),
   beschrijving_tekst.get(),datum_tekst.get())
   tekst_vak.delete(0,END)
   tekst_vak.insert(END,(drop_down_soort.get(),drop_down_user.get(),
   beschrijving_tekst.get(),datum_tekst.get()))

window=Tk()
window.wm_title("T I T A A N  Incidenten Register")

soort = StringVar(window)
soort.set("Soort")

menu = OptionMenu(window, soort, "Incident", "RFC", "Opdracht")
menu.grid(row=0,column=0)

user = StringVar(window)
user.set("User")

user_menu = OptionMenu(window, user, "Jesse", "Jan", "Sirano", "Shannon", 
"Niek", "Thomas", "Patrick")
user_menu.grid(row=1,column=0)

l3=Label(window,text="Korte beschrijving")
l3.grid(row=0,column=2)

l4=Label(window,text="Datum")
l4.grid(row=1,column=2)


beschrijving_tekst=StringVar()
l3=Entry(window,textvariable=beschrijving_tekst)
l3.grid(row=0,column=3)

datum_tekst=StringVar()
l4=Entry(window,textvariable=datum_tekst)
l4.grid(row=1,column=3)

tekst_vak=Listbox(window,height=10,width=35)
tekst_vak.grid(row=2,column=0,rowspan=6,columnspan=2)

scrollbar1=Scrollbar(window)
scrollbar1.grid(row=2,column=2,rowspan=10)

tekst_vak.configure(yscrollcommand=scrollbar1.set)
scrollbar1.configure(command=tekst_vak.yview)

b1=Button(window,text="Alle incidenten", width=14, bg='Gray', 
command=alle_incidenten)
b1.grid(row=2,column=3)

b2=Button(window,text="Voeg incident toe", width=14, bg='Gray', 
command=voeg_toe)
b2.grid(row=3,column=3)

b3=Button(window,text="Pas incident aan", width=14, bg='Gray')
b3.grid(row=4,column=3)

b4=Button(window,text="Verwijder incident", width=14, bg='Red')
b4.grid(row=5,column=3)

b5=Button(window,text="Sluit programma", width=14, bg='Orange')
b5.grid(row=6,column=3)


window.mainloop()

后端:

import sqlite3

def verbind_met_database():
    verbinding=sqlite3.connect("titaan_incidenten.db")
    cur=verbinding.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS titaan_incidenten
    (id INTEGER PRIMARY KEY, soort TEXT, user TEXT, beschrijving TEXT, 
    datum TEXT)")
    verbinding.commit
    verbinding.close()

def alle():
    verbinding=sqlite3.connect("titaan_incidenten.db")
    cur=verbinding.cursor()
    cur.execute("SELECT * FROM titaan_incidenten")
    rijen=cur.fetchall()
    verbinding.close()
    return rijen

def voeg_toe(soort,user,beschrijving,datum):
    verbinding=sqlite3.connect("titaan_incidenten.db")
    cur=verbinding.cursor()
    cur.execute("INSERT INTO titaan_incidenten VALUES (NULL,?,?,?,?)", 
    (soort,user,beschrijving,datum))
    verbinding.commit()
    verbinding.close()

def pas_aan(id,soort,user,beschrijving,datum):
    verbinding=sqlite3.connect("titaan_incidenten.db")
    cur=verbinding.cursor()
    cur.execute("UPDATE titaan_incidenten SET 
    soort=?,user=?,beschrijving=?,datum=? WHERE id=?", 
    (id,soort,user,beschrijving,datum))
    verbinding.commit
    verbinding.close()

def verwijder():
    verbinding=sqlite3.connect("titaan_incidenten.db")
    cur=verbinding.cursor()
    cur.execute("DELETE FROM titaan_incidenten WHERE id=?",(id,))

错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\crisc\Anaconda3\lib\tkinter\__init__.py", line 1702, in __ 
call__
return self.func(*args)
File "frontend.py", line 18, in voeg_toe

backend.voeg_toe(drop_down_soort.get(),
drop_down_user.get(),beschrijving_tekst.get(),datum_tekst.get())
AttributeError: 'function' object has no attribute 'get'

对我来说,使用下拉菜单是我从未做过的事情。 因此,也许我创建的功能不是必需的。 如果有人可以给我一些有关如何使该菜单正常工作的指示,那太好了!

我用正确的错误和代码对其进行了编辑。 对不起,请稍候。

谢谢,

克里斯

根据您提供的信息,您正在将错误的参数传递给backend.voeg_toe()函数。 而不是使用drop_down_soort.get()drop_down_user.get() ,您应该只传递这些函数,而不带对您的函数没有意义的.get() ,并在函数内部返回值。

函数体可以包含一个或多个return语句。 它们可以位于功能主体中的任何位置。 return语句结束函数调用的执行,并将结果(即return关键字后的表达式的值)“返回”给调用者。 如果return语句不带表达式,则返回特殊值None。 如果函数代码中没有return语句,则当控制流到达函数主体的末尾时,函数结束,并且将返回值“ None”。

例如:

def drop_down_soort():
   test = soort.get() #not sure even if soort.get() is getting any value, but I suppose yes!!!!
   window.quit()
   return test

def drop_down_user():
   test = user.get() #not sure even if user.get() is getting any value, but I suppose yes!!!!
   window.quit()
   return test

因此,每当您调用backend.voeg_toe(drop_down_soort(),drop_down_user(),....) ,它将获取这两个函数的返回值并将其作为参数传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM