프로그램을 만들고 ive는 사용자를 메인 메뉴에 연결하는 로그인 시스템을 만들었습니다. 지금까지 ive는 작동했지만 내가 좋아하는 것은 아닙니다. 내 코드는 프로그램을 잘 시작하지만 if name == ' main ': 서브 루틴에 문제가 있습니다. 내 문제는 로그인 대화 상자 PyQt 와 매우 유사합니다.
로그인 발췌
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)
따라서 이것은 로그인 대화 상자와 주 창 모두 동시에로드된다는 것을 의미합니다. 그러나 버튼은 메인 윈도우에서 작동합니다. 그러나 내 로그인 시스템에 연결되지 않았습니다.
그래서 로그인 시스템과 메인 윈도우를 함께 연결하는 방법에 대한 질문입니다. 이 질문이 길고 다루기 힘들지 않았기를 바랍니다.
내 코드를 살펴보면서 쇼 메뉴 신호를 잘못된 위치에 놓았습니다. 즉, 암호가 정확할 필요없이 주 메뉴 양식이로드된다는 것을 의미합니다. 나를 대신하여 테스트가 잘못되었습니다. 그러나 여전히 if name == ' main ': 서브 루틴 을 변경해야했습니다 . 다음과 같이 조정했습니다.
if __name__ == '__main__':
app=QtGui.QApplication(sys.argv)
if Ui_Login().exec_()==QtGui.QDialog.Accepted:
w = MainWidget()
w.show()
sys.exit()
이것은 내 문제를 해결하고 사용자 로그인이 메인 메뉴에 올바르게 연결되고 stackedwidget이 완벽하게 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다