无法从其他类运行类

时间:2014-04-18 15:36:12

标签: python pyqt pyqt4

我正试图从class AddTQuestions中的def运行class AddTest但它不会工作!! 它打开窗口AddTQuestions一瞬间然后立即关闭它?!

代码如下所示:

import sys
from PyQt4 import QtCore, QtGui

class Example(QtGui.QMainWindow):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
    def initUI(self):               
        RunClassAction = QtGui.QAction(QtGui.QIcon('exit24.png'), 'Exit', self)
        RunClassAction.triggered.connect(self.run)
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(RunClassAction)
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Why Wont this Woooorkkkkk')    
        self.show()

    def run(self):
        AddQuestion = AddTQuestions()
        AddQuestion.show()

class AddTQuestions(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(AddTQuestions, self).__init__(parent)
        self.welldone = QtGui.QLabel('WellDone')
        self.button = QtGui.QPushButton('Press Me')
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.welldone)
        layout.addWidget(self.button)
        self.setLayout(layout)
        print("hello")


if __name__ == '__main__':
    app = QtGui.QApplication([])
    window = Example()
    window.show()
    app.exec_()

1 个答案:

答案 0 :(得分:0)

它"赢得了工作"因为您没有保留对您创建的AddTQuestions实例的引用,因此在显示后会立即对其进行垃圾回收。

有许多不同的方法可以解决此问题,但对您的情况最好的方法可能是使用QDialog而不是QMainWindow,然后使用{{1}显示对话框}:

exec

这也有助于解决布局问题。