|
@@ -1,42 +1,150 @@
|
|
|
import sys
|
|
|
-from PyQt6.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout
|
|
|
-from PyQt6.QtCore import Qt, QPoint
|
|
|
+
|
|
|
+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.window_width, self.window_height = 1200, 800
|
|
|
- self.setMinimumSize(self.window_width, self.window_height)
|
|
|
- # self.setWindowFlags(Qt.)
|
|
|
- self.setStyleSheet('''
|
|
|
- QWidget {
|
|
|
- font-size: 30px;
|
|
|
- }
|
|
|
- ''')
|
|
|
+ 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']]
|
|
|
|
|
|
- self.layout = QVBoxLayout()
|
|
|
- self.setLayout(self.layout)
|
|
|
+ table = TableView(data, 4, 3)
|
|
|
|
|
|
- def mousePressEvent(self, event):
|
|
|
- self.oldPos = event.globalPos()
|
|
|
+ layout = QVBoxLayout()
|
|
|
+ layout.addWidget(table)
|
|
|
|
|
|
- def mouseMoveEvent(self, event):
|
|
|
- delta = QPoint(event.globalPos() - self.oldPos)
|
|
|
- self.move(self.x() + delta.x(), self.y() + delta.y())
|
|
|
- self.oldPos = event.globalPos()
|
|
|
+ self.setLayout(layout)
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- # don't auto scale when drag app to a different monitor.
|
|
|
- # QApplication.setAttribute(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
|
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
|
|
myApp = MyApp()
|
|
|
myApp.show()
|
|
|
|
|
|
- try:
|
|
|
- sys.exit(app.exec())
|
|
|
- except SystemExit:
|
|
|
- print('Closing Window...')
|
|
|
+ app.exec()
|