2017-11-29 17 views
0
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() 

は、このコードを実行しているときに私が取得エラーはありませんしています はAttributeError:「NoneType」オブジェクトが属性「メインループ」を持っていないはAttributeError:「NoneType」オブジェクトが属性「メインループ」

私はこれが必要と考えています最後のif-statement/mainloop()関数を使用してインタフェースを起動して実行しますが、このエラーが発生し続けます。私は本当に誰かがこれを解決する方法を知って欲しい!ありがとう!

+1

'init_UI'は暗黙的に' None'を返し、 'gui'という名前を与えます。 –

答えて

0

maininit_UI()から返す必要があります。 だからあなたの関数の末尾に追加します。

def init_UI(): 
    # ... 
    return main 

説明

あなたinit_UI機能がどのreturn文はありません。したがって、PythonではNoneとマークされている値は返されません。

そしてこうしてあなたのプログラムの最後の2行は、効果的になる:

gui = init_UI() 
None.mainloop() 
1

init_UI()戻り、デフォルトでNone。このNoneの値はguiに割り当てられます。

gui = init_UI() 
gui.mainloop() 

それはguiに割り当てられているので、あなたはその後、 `` gui`にmainloopを呼び出し、init_uiからTkオブジェクトmainを返す必要があります。

2

init_UIには返品がありません。したがって、gui = init_UI()では、guiはNoneです。

おそらくreturn mainの末尾にinit_UIの意味がありますか?

+0

ありがとうございます!それは今働く:) – Annelieke

関連する問題