2016-04-22 101 views
0

我用cx_Freeze创建了一个python程序的exe文件。
我已经使用PyQt4来创建一个GUI。在PyQt4 GUI关闭后关闭打开的控制台

它完美地打开,首先是一个空的控制台,然后是GUI。
但是,当我关闭GUI(在运行程序之后或不)时,控制台保持打开状态。如果我点击控制台的任何部分,它会给我弹出错误提示“MyProgram已停止工作”

这已经在系统(Win7-64bit)上用python install(3.4.4)和另一个系统没有python(Win7-64bit)。

有图形用户界面关闭后,我可以关闭此控制台的方法吗?或更好的... 如何我关闭控制台?

devenv的
的Python:3.4
操作系统:Windows 7

编辑

我设法寻找周围的工作.....我close_application方法我包括这行使用psutil杀死一个进程。这工作当我关闭通过UI按钮,但如果我点击“X”在窗口的右上方

谢谢

回答

1

我认为你需要将事件链接点击“X”顶用杀死进程行的右键。

本主题可能会有所帮助? PySide/PyQt detect if user trying to close window

+0

完美谢谢你,这个环节的帮助下,我推翻了的closeEvent()方法来清理关闭过程 – Eoin

0

我使用wxPython的,并面临着同样的问题。我找到的解决方案是将主函数包装在一个sys.exit子句中。 所以我main.py看起来是这样的:

import sys 
import wx 

class MyFrame(wx.Frame): 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Close Me") 
     panel = wx.Panel(self) 

     closeBtn = wx.Button(panel, label="Close") 
     closeBtn.Bind(wx.EVT_BUTTON, self.onClose) 

    def onClose(self, event): 
     self.Destroy() 

def main(): 
    app = wx.App(False) 
    frame = MyFrame() 
    frame.Show() 
    app.MainLoop() 


if __name__ == '__main__': 
    sys.exit(main())