"spyder"
中运行WinPython-64bit-3.3.2.3
没有任何问题,现在我想在没有控制台弹出的情况下运行它,我尝试使用pythonw.exe
。
当我将我的GUI保存为gui.pyw
时,我可以通过右键单击PythonWin
并使用edit with PythonWin
打开它,但只需双击即可使我的GUI弹出不到一秒钟然后退出程序。
这与我的GUI编程有关吗? “结构”就是这个:
import sys
from PyQt4 import QtGui, QtCore, Qt
from Main_Window_v2 import Ui_Dialog as Dlg
class MeinDialog(QtGui.QDialog, Dlg):
def __init__(self):
QtGui.QDialog.__init__(self)
self.setupUi(self)
self.connect(self.buttonOK,
QtCore.SIGNAL("clicked()"), self.onOK)
self.connect(self.buttonAbbrechen,
QtCore.SIGNAL("clicked()"), self.onClose)
self.connect(self.buttonsql,
QtCore.SIGNAL("clicked()"), self.onsql)
def onsql(self):
login=self.login_text_box.toPlainText()
from calc import get_variables #sql query
self.get_variables=get_variables(login)
#calls a class´ __init__ in another file in my direcotry
def onOK(self):
login=self.login_text_box.toPlainText()
self.get_variables.plot(login)
#calls another function in my class "calc"
def onClose(self):
print("bye!")
self.close()
app = QtGui.QApplication(sys.argv)
dialog = MeinDialog()
dialog.show()
我还尝试使用.exe
获取cx_freeze
并尝试按照此处所述进行构建Cx_Freeze:我遇到了同样的问题:GUI的主窗口
弹出并再次消失
答案 0 :(得分:0)
只需在代码末尾添加app.exec_()
即可。您的代码在Spyder中运行良好,因为Spyder使用PyQt并且已经运行了主循环事件。
答案 1 :(得分:0)
您应该在代码末尾添加app.exex_(),它用于分派所有PyQt GUI线程消息或其他线程信息消息。