【问题标题】:python segmentation faultpython分段错误
【发布时间】:2012-05-29 10:07:53
【问题描述】:

我想在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"

这里第一个循环它的工作,但从第二个循环我得到分段错误...请帮帮我..

【问题讨论】:

标签: python pyqt pyqt4


【解决方案1】:

应用程序中应该只有一个 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()

【讨论】:

  • 那么还有其他写法吗??.....我想在每个循环中显示弹出窗口..???
  • 并且在 doit 函数中出现分段错误
  • @user1372331 恐怕我不太明白你想要什么。
  • okok...别害怕....但是你看懂代码了吗???有什么办法让我没有任何错误地完成它?
  • 你想同时显示多个弹出窗口吗?是否要在用户关闭后重新打开主窗口,然后重复几次?
猜你喜欢
  • 2013-10-08
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多