“对象没有属性”python中的错误

时间:2018-05-09 16:49:42

标签: python python-3.x tkinter

下面是我在Python tkinter中编写的代码。

{
    coins: {
        365Coin: {
            id: 74,
            tag: "365",
            algorithm: "Keccak",
            lagging: true,
            listed: false,
            status: "No available stats",
            testing: false
        },
        Aiden: {
            id: 65,
            tag: "ADN",
            algorithm: "Scrypt-OG",
            lagging: true,
            listed: false,
            status: "No available stats",
            testing: false
        },
        Adzcoin: {
            id: 157,
            tag: "ADZ",
            algorithm: "X11",
            lagging: false,
            listed: false,
            status: "Active",
            testing: false
        }
        ... [With various key representing the name of coins]
    }
}

以下是错误

  

我在 init       Traceback(最近一次调用最后一次):       我在Tab创作中         文件“C:/Path/FileName.py”,第26行,in           ui.tabCreation()         在tabCreation中的文件“C:/Path/FileName.py”,第15行           self.tabControl.add(self.tab1,text =“select”)       AttributeError:'UICreation'对象没有属性'tabControl'

请帮我解决这个问题。我做错了什么以及如何解决它

4 个答案:

答案 0 :(得分:2)

您的def __init__(self): print ("I m in __init__") self.tabControl = ttk.Notebook(root) self.tab1 = ttk.Frame(self.tabControl) self.tab2 = ttk.Frame(self.tabControl) 方法应该是:

self.

您缺少每个属性的初始{{1}}。

答案 1 :(得分:1)

我们必须将tabcontroltab1tab2设置为自我并将其与自我一起使用

以下是问题的答案:

   import tkinter as tk
    from tkinter import *
    from tkinter import ttk
    root = Tk()

    class UICreation():
        def __init__(self):
            print ("I m in __init__")
            self.tabControl = ttk.Notebook(root)
            self.tab1 = ttk.Frame(self.tabControl) #we must use self.tabControl
            self.tab2 = ttk.Frame(self.tabControl) #we must use self.tabControl

        def tabCreation(self):
            print ("I M in Tab Creation")
            self.tabControl.add(self.tab1 , text="select ")
            self.tabControl.add(self.tab2, text="Add ")
            self.tabControl.grid()

        def checkBox(self):
            print ("I M in checkBox")
            CheckBox1 = Checkbutton(self.tab1, text="Check1")
            CheckBox1.grid()

    if __name__ == '__main__':
        ui = UICreation()
        ui.tabCreation()
        ui.checkBox()
        root.mainloop()

答案 2 :(得分:0)

UICreation在实例化时从不接收root。修复self以使其成为实例属性。

class UICreation():
    def __init__(self, root): #add root here
        print ("I m in __init__")
        self.tabControl = ttk.Notebook(root)
        self.tab1 = ttk.Frame(self.tabControl)
        self.tab2 = ttk.Frame(self.tabControl)

    def tabCreation(self):
        print ("I M in Tab Creation")
        self.tabControl.add(self.tab1 , text="select ")
        self.tabControl.add(self.tab2, text="Add ")
        self.tabControl.grid()

    def checkBox(self):
        print ("I M in checkBox")
        CheckBox1 = Checkbutton(self.tab1, text="Check1")
        CheckBox1.grid()

if __name__ == '__main__':
    ui = UICreation(root) # call with root
    ui.tabCreation()
    ui.checkBox()
    root.mainloop()

答案 3 :(得分:0)

您应该将tabControl tab1 tab2设置为self

def __init__(self):
    print ("I m in __init__")
    self.tabControl = ttk.Notebook(root)
    self.tab1 = ttk.Frame(self.tabControl)
    self.tab2 = ttk.Frame(self.tabControl)