Ho quasi finito la mia domanda, quando il cliente mi ha chiesto se potevo implementare un qualche tipo di modulo di accesso all'avvio dell'applicazione.Finestra di dialogo di login PyQt
Finora ho progettato l'interfaccia utente e ho lavorato sull'esecuzione effettiva. Username e password sono irrilevanti per ora.
class Login(QtGui.QDialog):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui=Ui_dlgLogovanje()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.buttonLogin, QtCore.SIGNAL("clicked()"), self.doLogin)
def doLogin(self):
name = str(self.ui.lineKorisnik.text())
passwd = str(self.ui.lineSifra.text())
if name == "john" and passwd =="doe":
self.runIt()
else:
QtGui.QMessageBox.warning(self, 'Greška',
"Bad user or password", QtGui.QMessageBox.Ok)
def runIt(self):
myprogram = Window()
myprogram.showMaximized() #myprogram is
class Window(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
if __name__=="__main__":
program = QtGui.QApplication(sys.argv)
myprogram = Window()
if Login().exec_() == QtGui.QDialog.Accepted:
sys.exit(program.exec_())
Il modulo di accesso è mostrato. Se si inseriscono nome utente e password corretti, viene mostrata e funzionante la finestra principale. Ma il modulo di login rimane attivo e se lo chiudo, si chiuderà anche la finestra principale.
btw, 'QtCore.QObject.connect (self.ui2.buttonLogin, QtCore.SIGNAL ("cliccato()"), self.doLogin)' può essere sostituito con 'auto .ui2.buttonLogin.clicked.connect (self.doLogin) ' – warvariuc