简体   繁体   中英

pyqt popup window not displaying properly

I have created two different pyqt windows, and within one of them, by pressing a button, it should bring up another smaller window. While my code does pretty much exactly what I just dais it should do, there is a problem with the way the smaller popup window is displayed.

This is my code for displaying the windows and the button functionality:

from PyQt4 import QtGui
from EnterprisePassport import Ui_StudentEnterprisePassport
from Session_tracker import Ui_Session_tracker

class StudentEnterprisePassport(Ui_StudentEnterprisePassport):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setupUi(self)
        self.sessionTracker_btn.clicked.connect(self.handleButton)
        self.window2 = None

    def handleButton(self):
        if self.window2 is None:
            self.window2 = Session_tracker(self)
            self.window2.show()

class Session_tracker(Ui_Session_tracker):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setupUi(self)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = StudentEnterprisePassport()
    window.show()
    sys.exit(app.exec_())

I can still use the functions within the window, but I can't move it, or close it, and there is no title bar. Have I done something wrong within my code for the popup window to appear like this?

Edit:

Original Session tracker window: Original window Popup session tracker window: Popup window

In order to show the other widget in it's own window, it has to be a QMainWindow or a QDialog .

One option, if you don't want to convert your existing Session_tracker to a QDialog , is to just wrap it in a QDialog

def handleButton(self):
    if self.window2 is None:
        self.window2 = QtGui.QDialog(self)
        lay = QtGui.QVBoxLayout()
        self.window2.setLayout(lay)
        self.session_tracker = Session_tracker(self.window2)
        lay.addWidget(self.session_tracker)
        self.window2.show()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM