После перехода во второе окно с помощью авторизации, не работает кнопка "Добавить" во втором окне
У меня есть файл, где происходит только авторизация (регистрация недоступна). После успешной авторизации пользователем он переносится в окно менеджера, отображается таблица, но при попытке добавить что-то новое, оно не добавляется.
Более того, ошибок нет ни в терминале, ни в обработчике, ни в консоли! Просто нет перехода после нажатия кнопки к методу добавления.
Window_authorization.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_AuthorizationWindow(object):
def setupUi(self, AuthorizationWindow):
AuthorizationWindow.setObjectName("AuthorizationWindow")
AuthorizationWindow.resize(340, 460)
self.centralwidget = QtWidgets.QWidget(AuthorizationWindow)
self.centralwidget.setObjectName("centralwidget")
# Создаем QLabel для отображения фона
self.background_label = QtWidgets.QLabel(self.centralwidget)
self.background_label.setGeometry(QtCore.QRect(0, 0, 340, 460))
# Загружаем фоновое изображение
background_image = QtGui.QPixmap("D:/PracticeMPT/PracticeApplication/designFile/background.jpeg")
self.background_label.setPixmap(background_image)
self.background_label.setScaledContents(True)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(0, 90, 340, 50))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(0, 25, 340, 90))
self.label_2.setText("")
self.label_2.setPixmap(QtGui.QPixmap("D:/PracticeMPT/PracticeApplication/designFile/logo.png"))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(75, 200, 193, 31))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(75, 260, 193, 31))
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(93, 350, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setLayoutDirection(QtCore.Qt.LeftToRight)
self.pushButton.setObjectName("pushButton")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 230, 55, 16))
self.label_3.setText("")
self.label_3.setObjectName("label_3")
AuthorizationWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(AuthorizationWindow)
QtCore.QMetaObject.connectSlotsByName(AuthorizationWindow)
self.manager_window = None
def retranslateUi(self, AuthorizationWindow):
_translate = QtCore.QCoreApplication.translate
AuthorizationWindow.setWindowTitle(_translate("AuthorizationWindow", "MainWindow"))
self.label.setText(_translate("AuthorizationWindow", "Добро пожаловать!"))
self.pushButton.setText(_translate("AuthorizationWindow", "Войти"))
Mainmain.py:
import sqlite3
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from Window_authorization import Ui_AuthorizationWindow
from ManagerWindow_Staff import Ui_ManagerWindow_Staff
class AuthorizationWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_AuthorizationWindow()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.login)
def openManagerWindow_Staff(self):
self.manager_window = QtWidgets.QMainWindow()
manager_ui = Ui_ManagerWindow_Staff()
manager_ui.setupUi(self.manager_window)
self.close()
self.manager_window.show()
def login(self):
username = self.ui.lineEdit.text()
password = self.ui.lineEdit_2.text()
# Подключение к базе данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
# Проверка логина, пароля и роли в базе данных
cursor.execute('SELECT Role FROM Authorization WHERE Login=? AND Password=?', (username, password))
role = cursor.fetchone()
if role and role[0] == 'Manager':
self.openManagerWindow_Staff()
else:
# Выводим сообщение о неверном логине или пароле
QMessageBox.warning(self, "Ошибка", "Неверный логин или пароль")
# Закрываем соединение с базой данных
conn.close()
class ManagerWindowS(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_ManagerWindow_Staff()
self.ui.setupUi(self)
self.pushButton_3.clicked.connect(self.add_data)
def add_data(self):
# Получаем значения из текстбоксов и комбобоксов
last_name = self.lineEdit_3.text()
first_name = self.lineEdit.text()
patronymic = self.lineEdit_4.text()
birth_date = self.lineEdit_5.text()
phone = self.lineEdit_7.text()
duties = self.lineEdit_8.text()
training_id = self.comboBox.currentIndex() + 1 # получаем ID обучения
evaluation = self.lineEdit_6.text()
# Вставляем новую запись в базу данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'INSERT INTO Staff (LastName, FirstName, Patronymic, BirthDate, Phone, Duties, TrainingID, Evaluation) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'
values = (last_name, first_name, patronymic, birth_date, phone, duties, training_id, evaluation)
cursor.execute(query, values)
conn.commit()
conn.close()
# Обновляем данные в таблице
self.update_table()
def update_table(self):
# Обновляем данные в таблице
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'SELECT * FROM Staff'
result = cursor.execute(query).fetchall()
# Очищаем модель
self.model.clear()
# Заполняем модель новыми данными
for row_number, row_data in enumerate(result):
for column_number, data in enumerate(row_data):
item = QtGui.QStandardItem(str(data))
self.model.setItem(row_number, column_number, item)
# Закрываем соединение с базой данных
conn.close()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
authorization_window = AuthorizationWindow()
authorization_window.show()
sys.exit(app.exec_())
ManagerWindow_Staff:
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ManagerWindow_Staff(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(975, 500)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 191, 500))
self.widget.setStyleSheet("background-color: #40E7FE;")
self.widget.setObjectName("widget")
self.pushButton = QtWidgets.QPushButton(self.widget)
self.pushButton.setGeometry(QtCore.QRect(15, 440, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.widget)
self.label.setGeometry(QtCore.QRect(0, 0, 181, 90))
self.label.setText("")
self.label.setPixmap(QtGui.QPixmap("D:\PracticeMPT\PracticeApplication\designFile\logo.png"))
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.pushButton_4 = QtWidgets.QPushButton(self.widget)
self.pushButton_4.setGeometry(QtCore.QRect(15, 260, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_4.setFont(font)
self.pushButton_4.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QtWidgets.QPushButton(self.widget)
self.pushButton_5.setGeometry(QtCore.QRect(15, 190, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_5.setFont(font)
self.pushButton_5.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_2 = QtWidgets.QPushButton(self.widget)
self.pushButton_2.setGeometry(QtCore.QRect(15, 120, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_2.setObjectName("pushButton_2")
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
self.widget_2.setGeometry(QtCore.QRect(190, 0, 791, 501))
self.widget_2.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.widget_2.setToolTip("")
self.widget_2.setStatusTip("")
self.widget_2.setAccessibleName("")
self.widget_2.setAccessibleDescription("")
self.widget_2.setStyleSheet("background-color: #EBE2E2;")
self.widget_2.setObjectName("widget_2")
self.tableView = QtWidgets.QTableView(self.widget_2)
self.tableView.setGeometry(QtCore.QRect(10, 20, 731, 271))
self.tableView.setObjectName("tableView")
# Создаем подключение к базе данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
# Выбираем данные из таблицы Staff
query = 'SELECT * FROM Staff'
result = cursor.execute(query).fetchall()
# Создаем модель для отображения данных в таблице
self.model = QtGui.QStandardItemModel(len(result), len(result[0]), self.widget_2)
self.model.setHorizontalHeaderLabels(
["ID", "Фамилия", "Имя", "Отчество", "Дата рождения", "Телефон", "Обязанности", "ID обучения",
"Оценка"])
for row_number, row_data in enumerate(result):
for column_number, data in enumerate(row_data):
item = QtGui.QStandardItem(str(data))
self.model.setItem(row_number, column_number, item)
# Создаем таблицу и привязываем к ней модель
self.tableView.setModel(self.model)
# Закрываем соединение с базой данных
conn.close()
self.lineEdit = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit.setGeometry(QtCore.QRect(10, 310, 90, 26))
self.lineEdit.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Normal)
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_3.setGeometry(QtCore.QRect(110, 310, 90, 26))
self.lineEdit_3.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_4.setGeometry(QtCore.QRect(210, 310, 90, 26))
self.lineEdit_4.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_4.setObjectName("lineEdit_4")
self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_5.setGeometry(QtCore.QRect(310, 310, 90, 26))
self.lineEdit_5.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_5.setObjectName("lineEdit_5")
self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_6.setGeometry(QtCore.QRect(595, 310, 90, 26))
self.lineEdit_6.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_6.setObjectName("lineEdit_6")
self.lineEdit_7 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_7.setGeometry(QtCore.QRect(410, 310, 90, 26))
self.lineEdit_7.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_7.setObjectName("lineEdit_7")
self.comboBox = QtWidgets.QComboBox(self.widget_2)
self.comboBox.setGeometry(QtCore.QRect(510, 313, 73, 22))
self.comboBox.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'SELECT Training FROM Training'
trainings = cursor.execute(query).fetchall()
conn.close()
# Заполняем комбобокс данными из таблицы "Training"
for training in trainings:
self.comboBox.addItem(training[0])
self.lineEdit_8 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_8.setGeometry(QtCore.QRect(596, 350, 90, 26))
self.lineEdit_8.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_8.setObjectName("lineEdit_8")
MainWindow.setCentralWidget(self.centralwidget)
self.comboBox.setCurrentText("")
self.comboBox.setObjectName("comboBox")
self.pushButton_3 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_3.setGeometry(QtCore.QRect(30, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_3.setFont(font)
self.pushButton_3.setAutoFillBackground(False)
self.pushButton_3.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_6 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_6.setGeometry(QtCore.QRect(145, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_6.setFont(font)
self.pushButton_6.setAutoFillBackground(False)
self.pushButton_6.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_6.setObjectName("pushButton_6")
# Обновлено имя метода
self.pushButton_7 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_7.setGeometry(QtCore.QRect(260, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_7.setFont(font)
self.pushButton_7.setAutoFillBackground(False)
self.pushButton_7.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_7.setObjectName("pushButton_7")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "Выход"))
self.pushButton_4.setText(_translate("MainWindow", "Планирование\n"
"обучения"))
self.pushButton_5.setText(_translate("MainWindow", "Оценить\n"
"сотрудника"))
self.pushButton_2.setText(_translate("MainWindow", "Сотрудники"))
self.lineEdit.setToolTip(_translate("MainWindow", "фывфы"))
self.lineEdit.setPlaceholderText(_translate("MainWindow", "Имя"))
self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "Фамилия"))
self.lineEdit_4.setPlaceholderText(_translate("MainWindow", "Отчество"))
self.lineEdit_5.setPlaceholderText(_translate("MainWindow", "Родился"))
self.lineEdit_6.setPlaceholderText(_translate("MainWindow", "Оценка произ"))
self.lineEdit_7.setPlaceholderText(_translate("MainWindow", "Телефон"))
self.lineEdit_8.setPlaceholderText(_translate("MainWindow", "Обязаности"))
self.pushButton_3.setText(_translate("MainWindow", "Добавить"))
self.pushButton_6.setText(_translate("MainWindow", "Изменить"))
self.pushButton_7.setText(_translate("MainWindow", "Удалить"))
В методе с интерфейсом менеджера вы увидите код вывода таблицы, который записан в интерфейсе. Изначально это тоже было в отдельном классе, но, переделав код, я подумал, что это как-то способствует решению проблемы, в итоге это не помогло и пока я оставил все как есть.
Честно говоря, я даже не понимаю, почему это происходит?
Может быть, потому, что нет запуска окна и он не видит эти клики.
Я использую библиотеку PyQt.
Ответы (1 шт):
В вопросах связанных с запросами к БД, надо прикладывать скрипт, который сформирует БД с нужными таблицами и как-то их заполнит.
НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.Вы создали класс
ManagerWindowS(), но не подключили его, а подключили формуUi_ManagerWindow_Staff(), в которой нет привязки сигналов и слотов.Для более эффективной работы с БД, изучите: Qt SQL — важный модуль, обеспечивающий поддержку баз данных SQL.
Руководство по программированию SQL содержит информацию о разработке с использованием Qt SQL.
На эту тему есть много вопросов, изучите их.
import sys
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
#from Window_authorization import Ui_AuthorizationWindow
class Ui_AuthorizationWindow(object):
def setupUi(self, AuthorizationWindow):
AuthorizationWindow.setObjectName("AuthorizationWindow")
AuthorizationWindow.resize(340, 460)
self.centralwidget = QtWidgets.QWidget(AuthorizationWindow)
self.centralwidget.setObjectName("centralwidget")
# Создаем QLabel для отображения фона
self.background_label = QtWidgets.QLabel(self.centralwidget)
self.background_label.setGeometry(QtCore.QRect(0, 0, 340, 460))
# Загружаем фоновое изображение
background_image = QtGui.QPixmap("D:/PracticeMPT/PracticeApplication/designFile/background.jpeg")
self.background_label.setPixmap(background_image)
self.background_label.setScaledContents(True)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(0, 90, 340, 50))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(0, 25, 340, 90))
self.label_2.setText("")
self.label_2.setPixmap(QtGui.QPixmap("D:/PracticeMPT/PracticeApplication/designFile/logo.png"))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(75, 200, 193, 31))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(75, 260, 193, 31))
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(93, 350, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setLayoutDirection(QtCore.Qt.LeftToRight)
self.pushButton.setObjectName("pushButton")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 230, 55, 16))
self.label_3.setText("")
self.label_3.setObjectName("label_3")
AuthorizationWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(AuthorizationWindow)
QtCore.QMetaObject.connectSlotsByName(AuthorizationWindow)
self.manager_window = None
def retranslateUi(self, AuthorizationWindow):
_translate = QtCore.QCoreApplication.translate
AuthorizationWindow.setWindowTitle(_translate("AuthorizationWindow", "MainWindow"))
self.label.setText(_translate("AuthorizationWindow", "Добро пожаловать!"))
self.pushButton.setText(_translate("AuthorizationWindow", "Войти"))
#from ManagerWindow_Staff import Ui_ManagerWindow_Staff
class Ui_ManagerWindow_Staff(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(975, 500)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 191, 500))
self.widget.setStyleSheet("background-color: #40E7FE;")
self.widget.setObjectName("widget")
self.pushButton = QtWidgets.QPushButton(self.widget)
self.pushButton.setGeometry(QtCore.QRect(15, 440, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.widget)
self.label.setGeometry(QtCore.QRect(0, 0, 181, 90))
self.label.setText("")
self.label.setPixmap(QtGui.QPixmap("D:\PracticeMPT\PracticeApplication\designFile\logo.png"))
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.pushButton_4 = QtWidgets.QPushButton(self.widget)
self.pushButton_4.setGeometry(QtCore.QRect(15, 260, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_4.setFont(font)
self.pushButton_4.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QtWidgets.QPushButton(self.widget)
self.pushButton_5.setGeometry(QtCore.QRect(15, 190, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_5.setFont(font)
self.pushButton_5.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_2 = QtWidgets.QPushButton(self.widget)
self.pushButton_2.setGeometry(QtCore.QRect(15, 120, 158, 50))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_2.setObjectName("pushButton_2")
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
self.widget_2.setGeometry(QtCore.QRect(190, 0, 791, 501))
self.widget_2.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.widget_2.setToolTip("")
self.widget_2.setStatusTip("")
self.widget_2.setAccessibleName("")
self.widget_2.setAccessibleDescription("")
self.widget_2.setStyleSheet("background-color: #EBE2E2;")
self.widget_2.setObjectName("widget_2")
self.tableView = QtWidgets.QTableView(self.widget_2)
self.tableView.setGeometry(QtCore.QRect(10, 20, 731, 271))
self.tableView.setObjectName("tableView")
# НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
# Создаем подключение к базе данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
# Выбираем данные из таблицы Staff
query = 'SELECT * FROM Staff'
result = cursor.execute(query).fetchall()
# Создаем модель для отображения данных в таблице
self.model = QtGui.QStandardItemModel(len(result), len(result[0]), self.widget_2)
self.model.setHorizontalHeaderLabels(
["ID", "Фамилия", "Имя", "Отчество", "Дата рождения", "Телефон", "Обязанности", "ID обучения",
"Оценка"])
for row_number, row_data in enumerate(result):
for column_number, data in enumerate(row_data):
item = QtGui.QStandardItem(str(data))
self.model.setItem(row_number, column_number, item)
# Создаем таблицу и привязываем к ней модель
self.tableView.setModel(self.model)
# Закрываем соединение с базой данных
conn.close()
self.lineEdit = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit.setGeometry(QtCore.QRect(10, 310, 90, 26))
self.lineEdit.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Normal)
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_3.setGeometry(QtCore.QRect(110, 310, 90, 26))
self.lineEdit_3.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_4.setGeometry(QtCore.QRect(210, 310, 90, 26))
self.lineEdit_4.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_4.setObjectName("lineEdit_4")
self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_5.setGeometry(QtCore.QRect(310, 310, 90, 26))
self.lineEdit_5.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_5.setObjectName("lineEdit_5")
self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_6.setGeometry(QtCore.QRect(595, 310, 90, 26))
self.lineEdit_6.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_6.setObjectName("lineEdit_6")
self.lineEdit_7 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_7.setGeometry(QtCore.QRect(410, 310, 90, 26))
self.lineEdit_7.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_7.setObjectName("lineEdit_7")
self.comboBox = QtWidgets.QComboBox(self.widget_2)
self.comboBox.setGeometry(QtCore.QRect(510, 313, 73, 22))
self.comboBox.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'SELECT Training FROM Training'
trainings = cursor.execute(query).fetchall()
conn.close()
# Заполняем комбобокс данными из таблицы "Training"
for training in trainings:
self.comboBox.addItem(training[0])
self.lineEdit_8 = QtWidgets.QLineEdit(self.widget_2)
self.lineEdit_8.setGeometry(QtCore.QRect(596, 350, 90, 26))
self.lineEdit_8.setStyleSheet("Background-color: white; \n"
"border-radius: 7px;\n"
"")
self.lineEdit_8.setObjectName("lineEdit_8")
MainWindow.setCentralWidget(self.centralwidget)
self.comboBox.setCurrentText("")
self.comboBox.setObjectName("comboBox")
self.pushButton_3 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_3.setGeometry(QtCore.QRect(30, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_3.setFont(font)
self.pushButton_3.setAutoFillBackground(False)
self.pushButton_3.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_6 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_6.setGeometry(QtCore.QRect(145, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_6.setFont(font)
self.pushButton_6.setAutoFillBackground(False)
self.pushButton_6.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_6.setObjectName("pushButton_6")
# Обновлено имя метода
self.pushButton_7 = QtWidgets.QPushButton(self.widget_2)
self.pushButton_7.setGeometry(QtCore.QRect(260, 450, 100, 30))
font = QtGui.QFont()
font.setPointSize(7)
font.setBold(True)
font.setWeight(75)
self.pushButton_7.setFont(font)
self.pushButton_7.setAutoFillBackground(False)
self.pushButton_7.setStyleSheet("QPushButton{\n"
"background-color: white;\n"
"border: 1px solid;\n"
"border-radius: 7px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color: rgba(170, 197, 250);\n"
"}\n"
"QPushButton:pressed{\n"
"background-color: rgba(107, 152, 242);\n"
"}")
self.pushButton_7.setObjectName("pushButton_7")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "Выход"))
self.pushButton_4.setText(_translate("MainWindow", "Планирование\n"
"обучения"))
self.pushButton_5.setText(_translate("MainWindow", "Оценить\n"
"сотрудника"))
self.pushButton_2.setText(_translate("MainWindow", "Сотрудники"))
self.lineEdit.setToolTip(_translate("MainWindow", "фывфы"))
self.lineEdit.setPlaceholderText(_translate("MainWindow", "Имя"))
self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "Фамилия"))
self.lineEdit_4.setPlaceholderText(_translate("MainWindow", "Отчество"))
self.lineEdit_5.setPlaceholderText(_translate("MainWindow", "Родился"))
self.lineEdit_6.setPlaceholderText(_translate("MainWindow", "Оценка произ"))
self.lineEdit_7.setPlaceholderText(_translate("MainWindow", "Телефон"))
self.lineEdit_8.setPlaceholderText(_translate("MainWindow", "Обязаности"))
self.pushButton_3.setText(_translate("MainWindow", "Добавить"))
self.pushButton_6.setText(_translate("MainWindow", "Изменить"))
self.pushButton_7.setText(_translate("MainWindow", "Удалить"))
class ManagerWindowS(QtWidgets.QMainWindow, Ui_ManagerWindow_Staff):
def __init__(self):
super().__init__()
# self.ui = Ui_ManagerWindow_Staff()
# self.ui.setupUi(self)
self.setupUi(self)
self.pushButton_3.clicked.connect(self.add_data)
def add_data(self):
# Получаем значения из текстбоксов и комбобоксов
last_name = self.lineEdit_3.text()
first_name = self.lineEdit.text()
patronymic = self.lineEdit_4.text()
birth_date = self.lineEdit_5.text()
phone = self.lineEdit_7.text()
duties = self.lineEdit_8.text()
training_id = self.comboBox.currentIndex() + 1 # получаем ID обучения
evaluation = self.lineEdit_6.text()
# Вставляем новую запись в базу данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'INSERT INTO Staff (LastName, FirstName, Patronymic, BirthDate, Phone, Duties, TrainingID, Evaluation) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'
values = (last_name, first_name, patronymic, birth_date, phone, duties, training_id, evaluation)
cursor.execute(query, values)
conn.commit()
conn.close()
# Обновляем данные в таблице
self.update_table()
def update_table(self):
# Обновляем данные в таблице
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
query = 'SELECT * FROM Staff'
result = cursor.execute(query).fetchall()
# Очищаем модель
self.model.clear()
# Заполняем модель новыми данными
for row_number, row_data in enumerate(result):
for column_number, data in enumerate(row_data):
item = QtGui.QStandardItem(str(data))
self.model.setItem(row_number, column_number, item)
# Закрываем соединение с базой данных
conn.close()
class AuthorizationWindow(QtWidgets.QMainWindow, Ui_AuthorizationWindow):
def __init__(self):
super().__init__()
# self.ui = Ui_AuthorizationWindow()
# self.ui.setupUi(self)
self.setupUi(self)
# self.ui.pushButton.clicked.connect(self.login)
# мне без---> ^^ <------------------------------------- удобнее
self.pushButton.clicked.connect(self.login)
def openManagerWindow_Staff(self):
# неправильно
# self.manager_window = QtWidgets.QMainWindow()
# manager_ui = Ui_ManagerWindow_Staff()
# manager_ui.setupUi(self.manager_window)
# ПРАВИЛЬНО ----------------> vvvvvvvvvvvvvvv <---------------------
self.manager_window = ManagerWindowS() # !!! +++ <--------
self.manager_window.show()
self.close()
def login(self):
username = self.lineEdit.text()
password = self.lineEdit_2.text()
# Подключение к базе данных
conn = sqlite3.connect('database3.db')
cursor = conn.cursor()
# Проверка логина, пароля и роли в базе данных
cursor.execute('SELECT Role FROM Authorization WHERE Login=? AND Password=?', (username, password))
role = cursor.fetchone()
if role and role[0] == 'Manager':
# if username == '12345' and password == '12345':
self.openManagerWindow_Staff()
else:
QMessageBox.warning(self, "Ошибка", "Неверный логин или пароль")
# Закрываем соединение с базой данных
conn.close()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
authorization_window = AuthorizationWindow()
authorization_window.show()
sys.exit(app.exec_())

