PyQt4 GUI 关闭后关闭打开的控制台
Close open console after PyQt4 GUI close
我用 cx_Freeze 创建了一个 python 程序的 exe。
我已经使用 PyQt4 创建了一个 GUI.
它打开完美,首先是一个空的控制台,然后是 GUI。
但是,当我关闭 GUI(在 运行 程序之后)时,控制台保持打开状态。如果我单击控制台的任何部分,它会弹出错误消息 "MyProgram has stopped working"
这已经在安装了 python (3.4.4) 的系统 (Win7-64bit) 和另一个没有安装 python (Win7-64bit) 的系统上进行了测试。
有什么方法可以在 GUI 关闭后关闭此控制台?或者更好...如何关闭控制台?
DevEnv
Python : 3.4
OS : Windows 7
编辑 :
我设法找到了解决办法......在我的 close_application 方法中,我包含了使用 psutil 终止进程的行。这在我通过 UI 按钮关闭时有效,但如果我单击 window
右上角的 "x" 则无效
谢谢
我认为您需要 link 单击带有终止进程行的 "x" 右上角按钮的事件。
这个话题可能有帮助?
PySide / PyQt detect if user trying to close window
我正在使用 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())
我用 cx_Freeze 创建了一个 python 程序的 exe。
我已经使用 PyQt4 创建了一个 GUI.
它打开完美,首先是一个空的控制台,然后是 GUI。
但是,当我关闭 GUI(在 运行 程序之后)时,控制台保持打开状态。如果我单击控制台的任何部分,它会弹出错误消息 "MyProgram has stopped working"
这已经在安装了 python (3.4.4) 的系统 (Win7-64bit) 和另一个没有安装 python (Win7-64bit) 的系统上进行了测试。
有什么方法可以在 GUI 关闭后关闭此控制台?或者更好...如何关闭控制台?
DevEnv
Python : 3.4
OS : Windows 7
编辑 :
我设法找到了解决办法......在我的 close_application 方法中,我包含了使用 psutil 终止进程的行。这在我通过 UI 按钮关闭时有效,但如果我单击 window
右上角的 "x" 则无效谢谢
我认为您需要 link 单击带有终止进程行的 "x" 右上角按钮的事件。
这个话题可能有帮助? PySide / PyQt detect if user trying to close window
我正在使用 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())