關于app.MainLoop()無法關掉程序

import wx

'''
從一個列表中選擇
'''

app=wx.App(False)
frame= wx.Frame(None, -1, "Single Choice")
dlg=wx.SingleChoiceDialog(None,"what version of Python are you using?",
                          "Single Choice",
                          ["1.5.2", "2.0", "2.1.3", "2.2", "2.3.1"])
if dlg.ShowModal()==wx.ID_OK:
    response=dlg.GetStringSelection()

print response

frame.Show()
app.MainLoop()

print "hello"

===========================================
運行程序,發現程序無法卡死,并且無法回到Shell控制臺。原因在于我們創建了一個wx.SingleChoiceDialog的列表單選框dlg控件,但是并沒有并我們關閉掉,導致wxPython是一直有控件在運行的。所以關閉掉dlg然后清除掉dlg,程序才可以回到Shell控制臺。

修改后的程序:

import wx

'''
從一個列表中選擇
'''

app=wx.App(False)
frame= wx.Frame(None, -1, "Single Choice")
dlg=wx.SingleChoiceDialog(None,"what version of Python are you using?",
                          "Single Choice",
                          ["1.5.2", "2.0", "2.1.3", "2.2", "2.3.1"])
if dlg.ShowModal()==wx.ID_OK:
    response=dlg.GetStringSelection()

print response

frame.Show()
dlg.Destroy()      #   打開一個對話框必須清掉(Destroy)
app.MainLoop()

print "hello"

===================================
完美解決TnT

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容