import sys from PyQt6.QtSql import QSqlDatabase, QSqlQuery from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QMessageBox, QTableView, \ QTableWidget, QTableWidgetItem # db = QSqlDatabase.addDatabase('QPSQL') # db.setHostName('10.30.0.137') # db.setPort(5432) # db.setUserName('gr692_zaa') # db.setPassword('12345') # # if not db.open(): # print(db.lastError().text()) # raise SystemExit # # query = QSqlQuery(db) # query.exec("""SELECT * FROM users""") # while query.next(): # print(query.value(1)) class MyApp(QWidget): def __init__(self): super().__init__() self.setFixedHeight(250) self.setFixedWidth(400) self.setWindowTitle('Авторизация') self.mainWindow = MainWindow() self.regWindow = RegWindow() self.loginEdit = QLineEdit() self.loginEdit.setFixedHeight(50) self.loginEdit.setPlaceholderText('Введите свой логин') self.passwordEdit = QLineEdit() self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Password) self.passwordEdit.setFixedHeight(50) self.passwordEdit.setPlaceholderText('Введите свой пароль') authButton = QPushButton("Войти") authButton.setFixedHeight(60) authButton.clicked.connect(self.auth) regButton = QPushButton("Регистрация") regButton.setFixedHeight(40) regButton.clicked.connect(self.reg) vbox = QVBoxLayout() vbox.addWidget(self.loginEdit) vbox.addWidget(self.passwordEdit) vbox.addWidget(authButton) vbox.addStretch(1) vbox.addWidget(regButton) self.setLayout(vbox) def auth(self): login = self.loginEdit.text() password = self.passwordEdit.text() if login == 'asd': self.mainWindow.show() else: alert = QMessageBox() alert.setWindowTitle('Ошибка') alert.setText('Неверные данные!') alert.exec() def reg(self): myApp.close() self.regWindow.show() class RegWindow(QWidget): def __init__(self): super().__init__() self.setFixedHeight(300) self.setFixedWidth(300) self.mainWindow = MainWindow() self.setWindowTitle('Регистрация') nameEdit = QLineEdit() nameEdit.setPlaceholderText('Введите своё имя') nameEdit.setFixedHeight(30) lastnameEdit = QLineEdit() lastnameEdit.setPlaceholderText('Введите свою фамилию') lastnameEdit.setFixedHeight(30) regButton = QPushButton('Зарегистрироваться') regButton.setFixedHeight(50) regButton.clicked.connect(self.reg) vbox = QVBoxLayout() vbox.addWidget(nameEdit) vbox.addWidget(lastnameEdit) vbox.addStretch(1) vbox.addWidget(regButton) self.setLayout(vbox) def reg(self): self.setWindowTitle('Квалификационный экзамен') self.close() self.mainWindow.show() class TableView(QTableWidget): def __init__(self, data, *args): QTableWidget.__init__(self, *args) self.data = data self.setData() self.resizeColumnsToContents() self.resizeRowsToContents() def setData(self): for a in range(len(self.data)): for b in range(len(self.data[0])): self.setItem(b, a, QTableWidgetItem(self.data[a][b])) self.setHorizontalHeaderLabels(['123', '321', '222']) class MainWindow(QWidget): def __init__(self): super().__init__() self.setFixedHeight(500) self.setFixedWidth(500) self.setWindowTitle('Квалификационный экзамен') data = [['1', '2', '3', '4'], ['1', '2', '1', '3'], ['1', '1', '2', '1']] table = TableView(data, 4, 3) layout = QVBoxLayout() layout.addWidget(table) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) myApp = MyApp() myApp.show() app.exec()