gpt4 book ai didi

python - 为什么我在这段 Python 代码中有缩进错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:00 24 4
gpt4 key购买 nike

我是不是疯了?这是前几天运行的,现在当我尝试运行它时,出现以下错误。代码是否可能存在其他问题,这就是它没有运行的原因,或者它是否明确表示我错误地缩进了第 10 行?我对此有点迷茫。

python phonebookapp.py
File "phonebookapp.py", line 10
self.text.pack()
^
IndentationError: unexpected indent

?

from Tkinter import *
import sqlite3

class Hello():
def __init__(self, master):

frame=Frame(master, width=80, height=50)
frame.pack()

self.text = Label(frame, text=" ")
self.text.pack()
self.text.grid(row=0, sticky=W)

self.lab = Label(frame, text="name")
self.lab.pack(side=LEFT)
self.lab.grid(row=1)

self.TextField = Entry(frame, text = "name", width=30)
self.TextField.insert(0, "Enter Name")
self.TextField.pack()
self.TextField.grid(row=1)
self.TextField.bind("Button-1", clearEvent)

self.TextField2 = Entry(frame, text = "age", width=30)
self.TextField2.insert(0, "Enter Age")
self.TextField2.pack()
self.TextField2.grid(row=2)

self.TextField3 = Entry(frame, text = "phone", width=30)
self.TextField3.insert(0, "Enter Phone #")
self.TextField3.pack()
self.TextField3.grid(row=3)

self.TextField4 = Entry(frame, text = "fblink", width=30)
self.TextField4.insert(0, "Enter Facebook Link")
self.TextField4.pack()
self.TextField4.grid(row=4)

self.btn=Button(frame, text='Add', command=self.add_note)
self.btn.pack()
self.btn.grid(row=5, rowspan=1, sticky="w")

self.showbtn = Button(frame, text='Update', command=self.show_notes)
self.showbtn.pack()
self.showbtn.grid(row=5, rowspan=1, sticky="")

self.delbtn = Button(frame, text='Delete', command=self.del_notes)
self.delbtn.pack()
self.delbtn.grid(row=5, rowspan=1, sticky="e")


self.content=Listbox(master, width=50)
self.content.pack()

def clearEvent(self, event):
self.TextField.delete(0,END)


def add_note(self):
if self.TextField.get() == "":
self.text["text"] = "Please type sumting"
else:
item = self.TextField.get()
item2 = self.TextField2.get()
item3 = self.TextField3.get()
item4 = self.TextField4.get()

conn = sqlite3.connect('phonebook1.db')
c = conn.cursor()
conn.execute('''
CREATE TABLE IF NOT EXISTS people(name TEXT primary key,
age TEXT, phone TEXT, fblink TEXT)''')
c.execute("insert into people values (?, ?, ?, ?)", (item, item2, item3, item4))
conn.commit()
list=c.execute("SELECT * FROM people")
conn.commit()

for row in list:
self.content.insert(END, row)
c.close()
self.TextField.delete(0, END)
self.TextField2.delete(0, END)
self.TextField3.delete(0, END)
self.TextField4.delete(0, END)

def show_notes(self):
conn = sqlite3.connect('phonebook1.db')

c =conn.cursor()
listbox.delete(0, END)
list=c.execute("SELECT * FROM people")
conn.commit()

for row in list:
self.content.insert(END, row)
c.close()

def del_notes(self):
pass

root=Tk()
application = Hello(root)
root.mainloop()

最佳答案

该行上方的行以四个空格和一个制表符开头。

该行以两个制表符开头。

对于 Python,制表符是一种不同于(更大)缩进的四个空格,即使它们恰好在您的文本编辑器(和 StackOverflow* 上)看起来相同。

这就是为什么你永远不应该混合使用制表符和空格。理想情况下,始终使用空格,而不是制表符;如果您坚持使用制表符,则永远不要使用空格。使用难以执行或为您检测的编辑器,并使用 -tt 标志运行您的代码。


* 用于缩进代码块的额外四个空格加上一行代码开头的四个空格看起来就像四个空格加一个制表符,因为该制表符跳转到第八个空格处的制表位,所以它结束在 SO 中看起来有效,即使它不是。这可能与它在您的文本编辑器中看起来有效的原因不同;在这种非常常见的情况下,它们的结果完全相同,这纯属巧合。无论如何,这意味着在 SO 上查找制表符问题的唯一方法是查看问题来源并四处移动光标,看看它是否使用单个向左箭头跳过多个空格。

关于python - 为什么我在这段 Python 代码中有缩进错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com