2015-02-15 2 views
0

Создание программы и ive сделали систему входа, чтобы подключить пользователя к главному меню. Пока у меня есть работа, но не то, что мне нравится. Мой код запускает программу, но у меня возникают проблемы с именем == 'main': подпрограмма. Моя проблема очень похожа на Login dialog PyQtКак подключить мой вход pyqt к окну qstackedwidget в python

Вход выдержке

class Ui_Login(QtGui.QDialog): 
def __init__(self): 
    QtGui.QDialog.__init__(self) 
    self.dbu = db.DatabaseUtility('UsernamePassword_DB', 'masterTable') 
    self.setupUi(self) 
    self.confirm = None 

Mainwidget exceprt

class MainWidget(QWidget): 
def __init__(self, parent=None): 
    super(MainWidget, self).__init__(parent) 
    self.stack = QStackedWidget() 
    layout = QVBoxLayout(self) 
    layout.addWidget(self.stack) 
    self.setGeometry(300, 300, 350, 250)  

Проблема возникает, когда я получаю в разделе имени. если имя == «главный»:

import sys 
app = QtGui.QApplication(sys.argv) 

if Ui_Login().exec_() == QtGui.QDialog.Accepted: 
    sys.exit() 
    w = MainWidget() 
    w.show() 
    sys.exit() 

Это если правильно имя пользователя и пароль введены, то главное окно показано на рисунке. Но форма входа в систему остается активной, и если я ее закрою, главное окно также закроется. Я также попробовал другой метод

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = Ui_Login() 
    ex.show() 
    sys.exit(app.exec_()) 
    app = QApplication(sys.argv) 
    w = MainWidget() 
    w.show() 
    app.exec_() 
    sys.exit() 

Это означало, что я бы войти в систему в обычном режиме, и главное окно будет придумать, однако, но кнопки не работает, так как не было подключения к другой форме. Таким образом, основной класс виджета не работал. я попробовал снова

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = Ui_Login() 
    w = MainWidget() 
    ex.show() 
    w.show() 
    sys.exit(app.exec_()) 
    sys.exit() 
    app = QApplication(sys.argv) 

Таким образом, это означало, что одновременно будут загружаться как диалоговое окно входа в систему, так и основное окно. Однако кнопка будет работать на главном окне. Однако он не был подключен к моей системе входа.

Итак, вопрос, как я могу объединить как систему входа, так и главный вход. Надеюсь, этот вопрос не был долгим и громоздким.

ответ

0

Я узнал, что, просмотрев свой код, я поставил сигнал меню шоу в неправильном месте, что означало, что форма основного меню будет загружаться без права пароля, который должен быть прав. Плохое тестирование от моего имени. Однако мне все еще нужно было изменить имя == 'main': подпрограмма. Я сделал следующие корректировки.

if __name__ == '__main__':  
    app=QtGui.QApplication(sys.argv) 
    if Ui_Login().exec_()==QtGui.QDialog.Accepted: 
    w = MainWidget() 
    w.show() 
    sys.exit() 

Это решило мою проблему и журнал пользователя в коннекторов к главному меню правильно и stackedwidget работает отлично.

Смежные вопросы