«У объекта нет атрибута» Ошибка в питоне - PullRequest
0 голосов
/ 09 мая 2018

Ниже приведен код, который я написал в Python tkinter.

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

class UICreation():
    def __init__(self):
        print ("I m in __init__")
        tabControl = ttk.Notebook(root)
        tab1 = ttk.Frame(tabControl)
        tab2 = ttk.Frame(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()

Ниже приведена ошибка

Я в init Traceback (последний вызов был последним): Я M в Tab Создание Файл "C: /Path/FileName.py", строка 26, в ui.tabCreation () Файл "C: /Path/FileName.py", строка 15, в tabCreation self.tabControl.add (self.tab1, text = "select") AttributeError: у объекта 'UICreation' нет атрибута 'tabControl'

Пожалуйста, помогите мне над этим. Что я делаю не так и как это решить

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

Мы должны установить tabcontrol, tab1, tab2 на себя и использовать их с собой

Ниже приведен ответ на проблему:

   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()
0 голосов
/ 09 мая 2018

Ваш __init__ метод, вероятно, должен быть:

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. для каждого атрибута.

0 голосов
/ 09 мая 2018

Вы должны установить 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)
0 голосов
/ 09 мая 2018

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...