如何实现 PyQt 多窗口程序
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui utf8 = QtCore.QString.fromUtf8 class LoginBox(QtGui.QMainWindow): def __init__(self): QtGui.QDialog.__init__(self) self.setFixedSize(500,300) self.setWindowTitle('Python GUI') self.user = QtGui.QLineEdit(self) self.user.setGeometry(QtCore.QRect(130, 80, 250, 30)) self.password = QtGui.QLineEdit(self) self.password.setGeometry(QtCore.QRect(130, 140, 250, 30)) self.password.setEchoMode(QtGui.QLineEdit.Password) self.btn = QtGui.QPushButton(utf8('登录'), self); self.btn.setGeometry(QtCore.QRect(215, 190, 80, 26)) self.btn.clicked.connect(self._clicked_handler) def _clicked_handler(self): if self.user.text() == 'test' and self.password.text() == '123456': MainPanel().show() else: QtGui.QMessageBox.warning(self, utf8('网页提示'), utf8('登录失败,密码错误!'), utf8('确定')); class MainPanel(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.resize(280,600) self.setWindowTitle(utf8('好为')) self.label = QtGui.QLabel(utf8('欢迎你,布兰克好为'), self); self.label.setGeometry(QtCore.QRect(10, 10, 200, 26)) self.label.setStyleSheet('font-size: 20px;color:#f00;') if __name__ == '__main__': app = QtGui.QApplication([]) a = LoginBox() a.show() sys.exit(app.exec_())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
把类实例化需要的地方,如下
class A(object):
pass
class B(object):
self.a=A()
然后对应操作
MainPanel().show()
MainPanel()实例化出来的变量是个局部变量,当_clicked_handler函数执行完,这个变量也就被销毁了,窗口也就不见了,所以窗口可能会显示了一下就马上关闭。
所以就像1L说的那样
把MainPanel换成QDialog,我这边测试还是不会显示。