How do i open a class from within another class by selecting an item on ToolBar?? Python/PyQt

StackOverflow https://stackoverflow.com/questions/23160290

  •  05-07-2023
  •  | 
  •  

Frage

I am trying to run class AddTQuestions from a def in class AddTest but it wont work!! It opens the window AddTQuestions for a split-second then closes it straight away?!

The code is shown here:

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_()
War es hilfreich?

Lösung

The object get's garbage collected, since you don't hold any reference to it when the function ends.

add them as class variables like this and the window stays open.

self.AddQuestion = AddTQuestions()
self.AddQuestion.show()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top