我创建了两个不同的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
答案 0 :(得分:0)
为了在其自己的窗口中显示其他窗口小部件,它必须是QMainWindow
或QDialog
。
如果您不想将现有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()