Es gibt zwei Klassen für zwei Fenster. Nach erfolgreicher Anmeldung sollte MainWindow gestartet werden. Code kann MainWindow starten. Es werden jedoch keine Widgets angezeigt. Es gibt zwei Kategorien von Benutzern: 1) admin 2) Andere Benutzer Ich möchte zwei verschiedene Fenster für Admin und andere Benutzer anzeigen. Wie behebt man das obige Problem?Nach dem erfolgreichen Anmelden können keine Widgets im zweiten Fenster angezeigt werden. Python und PyQt4
from PyQt4 import QtGui
import sys
class LoginDialog(QtGui.QDialog):
'''This is login window class'''
def __init__(self):
super().__init__()
self.username = QtGui.QLineEdit()
self.password = QtGui.QLineEdit()
self.login = QtGui.QPushButton('Login')
self.reset = QtGui.QPushButton('Reset')
loginLayout = QtGui.QFormLayout()
loginLayout.addRow("Username", self.username)
loginLayout.addRow("Password", self.password)
loginLayout.addRow(self.login, self.reset)
self.login.clicked.connect(self.onlogin)
self.reset.clicked.connect(self.onreset)
self.setGeometry(200,200,500,300)
self.setWindowTitle('test')
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
## layout = QtGui.QVBoxLayout()
##
## layout.addLayout(loginLayout)
## layout.addWidget(self.buttons)
self.setLayout(loginLayout)
self.show()
def onlogin(self):
''''When login button is pressed '''
uname = str(self.username.text())
pwd = str(self.password.text())
if uname == 'admin' and pwd == 'someone':
self.accept()
else:
QtGui.QMessageBox.warning(self, 'Error', 'incorrect cred')
def onreset(self):
'''When reset button is called '''
self.username.setText('')
self.password.setText('')
class MainWindow(QtGui.QMainWindow):
'''This is main window class'''
def __init__(self):
super(MainWindow, self).__init__()
self.setGeometry(200,200,500,300)
self.home()
# print('yetotofnck nkdfnk')
# self.label = QtGui.QLabel()
# self.setCentralWidget(self.label)
self.searchbar = QtGui.QLineEdit()
self.searchbtn = QtGui.QPushButton('Search')
self.logoutbtn = QtGui.QPushButton('Logout')
self.searchbtn.clicked.connect(self.onsearch)
self.logoutbtn.clicked.connect(self.onlogout)
self.layout = QtGui.QFormLayout()
self.layout.addRow(self.searchbar, self.searchbtn)
self.layout.addRow(self.logoutbtn)
## wlayout = QtGui.QVBoxLayout()
## wlayout.addLayout(layout)
self.setLayout(self.layout)
def home(self):
btn = QtGui.QPushButton('Logout')
btn.clicked.connect(self.close_app)
self.show()
def close_app(self):
sys.exit(-1)
def onsearch(self):
print('serach successful')
def onlogout(self):
pass
def setusername(self, username):
self.username = username
self.label.setText("Username entered:%s"%self.username)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
login = LoginDialog()
if not login.exec_():
sys.exit(-1)
main = MainWindow()
main.home()
## main.setusername(login.username.text())
## main.show()
sys.exit(app.exec_())
http://stackoverflow.com/questions/9689053/how-to-communicate-or-switch-between-two-windows-in-pyqt4. Ich habe Hilfe von diesem Beitrag genommen, um obigen Code zu schreiben. – Rudra