Python AttributeError:“非类型”对象没有属性“mainloop”

Python AttributeError:“非类型”对象没有属性“mainloop”,python,python-3.x,Python,Python 3.x,运行此代码时出现的错误是: AttributeError:“非类型”对象没有属性“mainloop” 我相信我需要最后一个if语句/mainloop函数来启动和运行接口,但我一直遇到这个错误。我真的希望有人知道如何解决这个问题!谢谢 您需要从init_UI返回main。 因此,在函数末尾添加: from sys import platform as sys_pf if sys_pf == 'darwin': import matplotlib matplotlib.use("TkAgg") f

运行此代码时出现的错误是: AttributeError:“非类型”对象没有属性“mainloop”

我相信我需要最后一个if语句/mainloop函数来启动和运行接口,但我一直遇到这个错误。我真的希望有人知道如何解决这个问题!谢谢

您需要从init_UI返回main。 因此,在函数末尾添加:

from sys import platform as sys_pf
if sys_pf == 'darwin':
import matplotlib
matplotlib.use("TkAgg")

from tkinter import *
from tkinter.ttk import * 
import ui 

def init_UI():

    main = Tk()
    main.title('data2knowledge')
    n = Notebook(main)

    ProcessTab = Frame(n)
    MergeTab = Frame(n)
    LearningTab = Frame(n)
    ReportTab = Frame(n)
    AboutTab = Frame(n)

    n.add(ProcessTab, text = "Process")
    n.add(MergeTab, text = "Merge")
    n.add(LearningTab, text = "Learn")
    n.add(ReportTab, text = "Report")
    n.add(AboutTab, text = "About")

if __name__ == '__main__':
    '''initialize GUI and start it'''
    gui = init_UI()
    gui.mainloop()
解释

您的init_UI函数没有任何返回语句。因此不返回任何值,在Python中标记为无

因此,程序的最后两行实际上变成:

def init_UI():
   # ...
   return main
您需要从init_UI返回main。 因此,在函数末尾添加:

from sys import platform as sys_pf
if sys_pf == 'darwin':
import matplotlib
matplotlib.use("TkAgg")

from tkinter import *
from tkinter.ttk import * 
import ui 

def init_UI():

    main = Tk()
    main.title('data2knowledge')
    n = Notebook(main)

    ProcessTab = Frame(n)
    MergeTab = Frame(n)
    LearningTab = Frame(n)
    ReportTab = Frame(n)
    AboutTab = Frame(n)

    n.add(ProcessTab, text = "Process")
    n.add(MergeTab, text = "Merge")
    n.add(LearningTab, text = "Learn")
    n.add(ReportTab, text = "Report")
    n.add(AboutTab, text = "About")

if __name__ == '__main__':
    '''initialize GUI and start it'''
    gui = init_UI()
    gui.mainloop()
解释

您的init_UI函数没有任何返回语句。因此不返回任何值,在Python中标记为无

因此,程序的最后两行实际上变成:

def init_UI():
   # ...
   return main
init_UI默认返回None;此“无”值被分配给gui

 gui = init_UI()
 None.mainloop()
您必须从init_ui返回Tk对象main,因此它被分配给gui,然后在``gui`上调用mainloop。

init_ui默认不返回任何对象;此“无”值被分配给gui

 gui = init_UI()
 None.mainloop()
您必须从init_ui返回Tk对象main,因此它被分配给gui,然后在``gui`上调用mainloop。

您的init_ui没有返回。因此,当gui=init_UI时,gui是None

也许您想在init_UI的末尾返回main?

您的init_UI没有返回。因此,当gui=init_UI时,gui是None

也许您想在init_UI的末尾返回main?

init_UI隐式返回None,您给它命名为gui。init_UI隐式返回None,您给它命名为gui。