2010-11-30 110 views
1

私はPythonを使用してCPUスケジューラアプリケーションを作成しましたが、wxpythonを使用して、問題は、閉じるボタン(x)をクリックするとフレームが閉じられるが、もう1つまたは複数のフレームが再び表示され、プログラムが実行を継続することである。閉じるボタンpythonをクリックしてもプログラムの実行が終了しない(wxpython-GUIを使用)

class Interface(wx.Frame): 
    def __init__(self , par , id): 
     wx.Frame.__init__(self , par , id , 'XP simulator' , size=(200 , 200)) 
     panel = wx.Panel(self) 
     self.sel = 30 
     centerPanel = wx.Panel(panel, -1 , size=(100,100) , pos=(50,30)) 
     self.cpu = CPU(centerPanel, -1) 


    def prnt(string , frm): 
     print string 

    if __name__ =="__main__": 

     mutex = threading.Semaphore() 
     full = threading.Semaphore(0) 
     empty = threading.Semaphore(30) 

     buff = util.Queue() 
     prod = util.Producer(buff , mutex , empty , full) 

     app = wx.App() 
     frame = Interface(None, -1) 
     frame.Show() 

     prod.start() 
     print "produced" 
     time.sleep(1) 
     xp = sched.XPsched(buff , mutex , full , empty, prnt, frame) 
     xp.start() 

     app.MainLoop() 

感謝;)あなたはwxFrameでcloseイベントをバインドする必要が ナタリー...

+1

self.Bind(wx.EVT_CLOSE, self.on_close)

はその後on_closeメソッドを追加'if __name__ ==" __main __ ":'ブロックはあまりにもインデントされています。あなたのソースファイルのようなものではありませんか? – nmichaels

答えて

1

def on_close(self, event): 
    self.Destroy() 
    sys.exit(0) 
関連する問題