我正在用Tkinter制作一个简单的产品库存应用,然后在第10行上得到NameError
,如回溯所示。
from tkinter import ttk
from tkinter import *
import sqlite3
class Product:
def __init__(self, window):
self.wind = window
self.wind.title("Products inventory")
frame = LabelFrame(self.wind, text = 'Register a new product')
frame.grid(row = 0, column = 0, columnspan = 3, pady = 20)
Label(frame, text = 'Name: ').grid(row = 1, column = 0)
self.name = Entry(frame)
self.name.grid(row = 1, column = 1)
if __name__ == '__main__':
window = Tk()
aplication = Product(window)
window.mainloop()
显示的错误是:
Traceback (most recent call last):
File "C:\Users\Joaquin\Desktop\Python apps\Products\main.py", line 5, in <module>
class Product:
File "C:\Users\Joaquin\Desktop\Python apps\Products\main.py", line 10, in Product
frame = LabelFrame(self.wind, text = 'Register a new product')
NameError: name 'self' is not defined
答案 0 :(得分:1)
这是一个缩进问题,您的代码的一部分直接位于类主体中,而不是__init__
主体中:
from tkinter import ttk
from tkinter import *
import sqlite3
class Product:
def __init__(self, window):
self.wind = window
self.wind.title("Products inventory")
frame = LabelFrame(self.wind, text = 'Register a new product')
frame.grid(row = 0, column = 0, columnspan = 3, pady = 20)
Label(frame, text = 'Name: ').grid(row = 1, column = 0)
self.name = Entry(frame)
self.name.grid(row = 1, column = 1)
window = Tk()
aplication = Product(window)
window.mainloop()