pyqt弹出窗口无法正常显示

时间:2016-04-09 12:26:58

标签: python button pyqt popupwindow

我创建了两个不同的pyqt窗口,在其中一个窗口中,按下一个按钮,它应该会显示另一个较小的窗口。虽然我的代码几乎完全是我应该做的,但是显示较小的弹出窗口的方式存在问题。

这是我显示窗口和按钮功能的代码:

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_())

我仍然可以使用窗口中的功能,但我无法移动它或关闭它,并且没有标题栏。我的代码中是否有错误,弹出窗口显示为这样?

编辑:

原始会话跟踪窗口:Original window 弹出会话跟踪窗口:Popup window

1 个答案:

答案 0 :(得分:0)

为了在其自己的窗口中显示其他窗口小部件,它必须是QMainWindowQDialog

如果您不想将现有Session_tracker转换为QDialog,则可以选择将其包装在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()