【问题标题】:Can't define class in python [closed]无法在python中定义类[关闭]
【发布时间】:2020-11-01 04:17:10
【问题描述】:

代码::

from tkinter import *
import tkinter.messagebox


class Library:

    def __init_(self, root):
        self.root = root
        self.root.title(" Library Management System ")
        self.root.geometry("1350x750+0+0")

        MTy = StringVar()
        Ref = StringVar()
        Title = StringVar()
        fna = StringVar()
        sna = StringVar()
        Adr1 = StringVar()
        Adr2 = StringVar()
        pcd = StringVar()
        MNo = StringVar()
        BkID = StringVar()
        Bkt = StringVar()
        BkT = StringVar()
        Atr = StringVar()
        DBo = StringVar()
        Ddu = StringVar()
        sPr = StringVar()
        Lrf = StringVar()
        Dod = StringVar()
        DonL = StringVar()

        #============================================FRAMES=================================================#

        MainFrame = Frame(self.root)
        MainFrame.grid()

        Title_Frame = Frame(MainFrame, bd=2, padx=40, pady=8, bg='cadet blue', relief=RIDGE)
        Title_Frame.grid(side=TOP)

        self.lblTitle = Label(Title_Frame, font=('arial', 46, 'bold'), text=" Library Management System ")
        self.lblTitle.grid(sticky=W)

        ButtonFrame = Frame(MainFrame, bd=2, width=1350, height=100, padx=20, pady=20, bg='Cadet Blue', relief=RIDGE)
        ButtonFrame.pack(side=BOTTOM)

        FrameDetail = Frame(MainFrame, bd=0, width=1350, height=50, padx=20, relief=RIDGE)
        FrameDetail.pack(side=BOTTOM)

        DataFrame = Frame(MainFrame, bd=1, width=1300, height=400, padx=20, pady=20, relief=RIDGE)
        DataFrame.pack(side=BOTTOM)

        DataFrameLEFT = LabelFrame(DataFrame, bd=1, width=800, height=300, padx=20, relief=RIDGE,
                                   font=('arial', 12, 'bold'), text=' Library Member Info ', bg='Cadet Blue')
        DataFrameLEFT.pack(side=LEFT)

        DataFrameRIGHT = LabelFrame(DataFrame, bd=1, width=450, height=300, padx=20, pady=3, relief=RIDGE,
                                    font=('arial', 12, 'bold'), text=' Book Details ', bg='Cadet Blue')
        DataFrameRIGHT.pack(side=RIGHT)

    if __name__ == '__main__':
        root = Tk()
        application = Library(root)
        root.mainloop()

错误::

Traceback(最近一次调用最后一次):文件 “C:/Users/Jedi/PycharmProjects/LMS/main.py”,第 5 行,在 类库:库中的文件“C:/Users/Jedi/PycharmProjects/LMS/main.py”,第 62 行 application = Library(root) NameError: name 'Library' is not defined

进程以退出代码 1 结束

【问题讨论】:

  • 这不是错误。那只是说错误在哪里。发布其余的回溯。
  • 如果你想要一个空类,使用class Library: pass
  • 请发布完整的错误代码
  • Traceback(最近一次调用最后):文件“C:/Users/Jedi/PycharmProjects/LMS/main.py”,第 5 行,在 类库中:文件“C:/Users /Jedi/PycharmProjects/LMS/main.py",第 62 行,在库应用程序中 = Library(root) NameError: name 'Library' is not defined 进程以退出代码 1 结束
  • 因此错误来自您未包含在问题中的一行代码。请edit您的问题包括minimal reproducible example

标签: python class tkinter


【解决方案1】:

首先,您的缩进是错误的,您必须将if 放在与class 相同的缩进级别,例如:

class Library:
   .....

if __name__ == '__main__':
  ....

其次,但最重要的是,您的 def __init_() 有一个错字,应该是 __init__() 并带有两个下划线尾随和前导 init,但您只给出了一个(尾随)。

class Library:
    def __init__(self, root):
        self.root = root
.....

但是即使做了这一切,你还是会在Title_Frame.grid(side=TOP)得到另一个错误,因为grid()没有选项side,它是pack()的选项,所以把它改成:

Title_Frame.pack(side=TOP)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2013-09-23
    • 1970-01-01
    • 2015-08-23
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多