artem 2 năm trước cách đây
mục cha
commit
e7943e5098
1 tập tin đã thay đổi với 132 bổ sung24 xóa
  1. 132 24
      main.py

+ 132 - 24
main.py

@@ -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()