为什么我会得到“TypeError:元组索引必须是整数或切片,而不是str”,我在遵循一个教程(pythontkinter和sqlite)

2024-06-01 11:26:56 发布

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

这应该是用tkinter制作的宠物公司管理GUI应用程序 我正在学习一个教程,我不知道为什么会出现这个错误,但是导师没有看到。 我已经尝试将字符串更改为int,但它仍然给我一个错误 程序在数据库为空时运行,只有在数据库中有数据时才会出现此错误

main.py

from tkinter import *
from tkinter import ttk
from ttkbootstrap import Style
import time
from rex_database import DBConnect
from tkinter import messagebox

dbConnect = DBConnect()

root = Tk()
x = root.winfo_screenwidth()
y = root.winfo_screenheight()
root.geometry("%dx%d" % (x, y))

notebook = ttk.Notebook(root, height=y, width=x)
root.title("Rex Inc System")
style = Style(theme='solar')  # bootstrap theme


# tabs
tab1 = Frame(notebook)
tab2 = Frame(notebook)
tab3 = Frame(notebook)
tab4 = Frame(notebook)
tab5 = Frame(notebook)
tab6 = Frame(notebook)
tab7 = Frame(notebook)

# naming tabs
notebook.add(tab1, text="Inventory")
notebook.add(tab2, text="Sales System")
notebook.add(tab3, text="Register Pet")
notebook.add(tab4, text="Adopt Pet")
notebook.add(tab5, text="Studding")
notebook.add(tab6, text="Database")
notebook.add(tab7, text="Calculators")
notebook.grid()

# tab1 content
Label(tab1, text="hbthryhy", fg='green', bg='black', relief="solid", font=("arial", 17, "bold")).grid(row=0, column=0)

# tab2 content
Label(tab2, text="nunujny", fg='blue', bg='black', relief="solid", font=("arial", 17, "bold")).grid(row=0, column=0)

# tab3 content
ttk.Label(tab3, text='Pet Name:').grid(row=0, column=0, pady=10)

petname = ttk.Entry(tab3, width=30, font=('Arial', 10))
petname.grid(row=0, column=1, columnspan=2)

SpanType = StringVar()
SpanType.set("Dog")
ttk.Label(tab3, text='Pet Type:').grid(row=1, column=0)
ttk.Radiobutton(tab3, text="Dog", variable=SpanType, value="Dog").grid(row=1, column=1)
ttk.Radiobutton(tab3, text="Cat", variable=SpanType, value="Cat").grid(row=1, column=2)

SpanType = StringVar()
SpanType.set("Male")
ttk.Label(tab3, text='Gender:').grid(row=2, column=0)
ttk.Radiobutton(tab3, text="Male", variable=SpanType, value="Male").grid(row=1, column=1)
ttk.Radiobutton(tab3, text="Female", variable=SpanType, value="Female").grid(row=1, column=2)

ttk.Label(tab3, text='Pet Description:').grid(row=2, column=0)
pet_desc = ttk.Entry(tab3, width=50)
pet_desc.grid(row=2, column=1)

save_reg = ttk.Button(tab3, text="Save", style='success.TButton')
save_reg.grid(row=3, column=1)


def save_click():
    print("Pet Name is {}".format(petname.get()))
    print("Pet type is {}".format(SpanType.get()))
    print("Pet Description: {}".format(pet_desc.get()))
    dbsave = dbConnect.Add(Petname=petname.get(), Type=SpanType.get(), Description=pet_desc.get())
    messagebox.showinfo(title="Success", message=dbsave)

    petname.delete(0, 'end')
    pet_desc.delete(0, 'end')


save_reg.config(command=save_click)

date_reg = time.asctime(time.localtime(time.time()))
Label(tab3, text=date_reg).grid(row=4, column=1)

# tab4 content
Label(tab4, text="grgrgrg", fg='blue', bg='black', relief="solid", font=("arial", 17, "bold")).grid(row=0, column=0)

# tab5 content
Label(tab5, text="thtthhth", fg='blue', bg='black', relief="solid", font=("arial", 17, "bold")).grid(row=0, column=0)

# tab6 content
tv = ttk.Treeview(tab6)
tv.pack()
tv.heading("#0", text="ID")
tv.configure(column=('Petname', 'Type', 'Description'))
tv.heading("Petname", text="Pet Name")
tv.heading("Type", text="Type")
tv.heading("Description", text="Description")
listing = dbConnect.Listpets()
for row in listing:
    tv.insert('', 'end', '#{}'.format(row["ID"]), text=row["ID"])
    tv.set('#{}'.format(row["ID"]), 'Petname', row["Petname"])
    tv.set('#{}'.format(row["ID"]), 'Type', row["Type"])
    tv.set('#{}'.format(row["ID"]), 'Description', row["Description"])

# tab7 content

# simple calculator
display = ttk.Entry(tab7, width=77).grid(row=0, column=0, columnspan=2)

root.state("zoomed")
root.mainloop()





Tags: textaddcolumnrootdescriptiontvframelabel