python分段错误

python分段错误,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我想用python在弹出窗口中显示一条消息…所以我写了这段代码…请检查 import sys from PyQt4.Qt import * class MyPopup(QWidget): def __init__(self): print "6" QWidget.__init__(self) class MainWindow(QMainWindow): def __init__(self, *args): print "4"

我想用python在弹出窗口中显示一条消息…所以我写了这段代码…请检查

import sys
from PyQt4.Qt import *

class MyPopup(QWidget):
    def __init__(self):
        print "6"
        QWidget.__init__(self)


class MainWindow(QMainWindow):
    def __init__(self, *args):
        print "4"
        QMainWindow.__init__(self, *args)
        self.cw = QWidget(self)
        self.setCentralWidget(self.cw)
        self.btn1 = QPushButton("Start Chat", self.cw)
        self.btn1.setGeometry(QRect(50, 30, 100, 30))
        self.connect(self.btn1, SIGNAL("clicked()"), self.doit)
        self.w = None

    def doit(self):
        print "5"
        print "Opening a new popup window..."
        self.w = MyPopup()
        self.w.setGeometry(QRect(0, 0, 400, 200))
        self.w.show()

class App(QApplication):
    def __init__(self, *args):
        print "3"
        QApplication.__init__(self, *args)
        self.main = MainWindow()
        #self.connect(self, SIGNAL("lastWindowClosed()"), self.byebye )
        self.main.show()

    #def byebye( self ):
        #self.exit(0)

for i in range(1, 5):
    if __name__ == "__main__":
        print "1"
        global app
        app = App(sys.argv)
        app.exec_()
    #main(sys.argv)
else:
    print "over"

这里第一个循环正常,但从第二个循环开始,我发现了分段错误……各位请帮帮我。

一个应用程序中应该只有一个QApplication对象。我想你的问题是你试图在一个循环中创建几个

如果希望用户在主窗口实际关闭之前关闭四次,可以添加事件处理程序:

class MainWindow(QMainWindow):
    def __init__(self, *args):
        ...
        self.counter = 1

    def closeEvent(self, event):
        print "closeEvent", self.counter
        self.counter += 1
        if self.counter < 5:
            event.ignore()
        else:
            event.accept()
class主窗口(QMainWindow):
定义初始化(self,*args):
...
self.counter=1
def关闭事件(自身、事件):
打印“closeEvent”,self.counter
self.counter+=1
如果self.counter<5:
event.ignore()
其他:
event.accept()

那么有没有其他方法来编写它呢???…我想在每个循环中显示弹出窗口…??并且在doit中出现了分段错误function@user1372331恐怕我不太明白你想要什么。好吧……别害怕……但是你明白代码吗???有什么方法可以让我在没有任何错误的情况下完成它吗?您想同时显示多个弹出窗口吗?是否要在用户关闭后重新打开主窗口,并重复几次?帮我解决了这个问题。