2つのウィンドウには2つのクラスがあります。 ログインに成功すると、MainWindowが起動します。コードはMainWindowを起動できます。しかし、ウィジェットは表示されません。 ユーザーには2種類あります: 1)admin 2)その他のユーザー adminと他のユーザーに対して2つの異なるウィンドウを表示します。 上記の問題を解決する方法は?ログインに成功した後、2番目のウィンドウでウィジェットを表示できません。 Pythonと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。私は上記のコードを書くためにこの記事の助けを借りました。 – Rudra