2017-09-02 54 views
0

我有一個Ubuntu的GUI應用程序,也打印消息到終端。圖形用戶界面的「退出」菜單如下所示:Python:與'打印'GUI功能關閉終端窗口後不再工作

def quit(): 
    print('exiting') 
    Gtk.main_quit() 

如果我在後臺運行我的應用程序,我退出終端而應用程序仍在運行,上述quit功能並不做任何事情。但是,如果我刪除打印語句,則應用程序會按預期退出。

所以看起來print語句阻塞了腳本的其餘部分運行。我怎樣才能避免這種情況?

回答

1

改爲使用日誌記錄。

import logging

logging.basicConfig(filename='gui_app.log', level=logging.INFO, propogate=0)

使用logging.info("Exiting")到位print語句的,記錄是監視應用程序的正確方法,並且不會中斷控制的流程。

+0

確實有效。但只要控制檯處於打開狀態,它不會給我定製的控制檯消息。它總是以INFO作爲前綴: – bluppfisk

+0

這是因爲它是日誌記錄協議,因爲你使用的是'logging.info',所以它將前綴INFO,因爲退出通知被視爲INFO。您可以使用警告,錯誤等。完整列表可以在這裏找到:https://docs.python.org/2/library/logging.html 如果您正確使用日誌記錄,那麼你會有很少的問題調試,因爲它將以適當的消息開頭。 –

+0

,但我只想發送一個乾淨的消息給誰從終端啓動我的應用程序。因爲它是一個python腳本,所以很可能。 – bluppfisk