PEHDOM
по идее вам нужно делать как-то так
Огромное спасибо, дружище
PEHDOM)) Заработало) Можно еще 2 вопроса, пожалуйста, ибо в моем окружении нету профессионалов вашего уровня.
1)Как можно вызвать все методы класса Management в методе Admin класса Ui_login, чтобы открыть окно класса Management? При попытке вызвать класс Management подобным образом self.newWin.show() выдается ошибка в консоли: AttributeError: ‘Management’ object has no attribute ‘show’. В случае, если вызвать класс Management с одним из его методов, он открывает окно, но другие методы класса Management не работают. Это представлено все в коде ниже:
import Modules.login
import Modules.SystemOfUsersManagement
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_login(Modules.login.Ui_Authorization):
def setupUi(self, auth):
Modules.login.Ui_Authorization.setupUi(self, auth)
self.login_pushButton.clicked.connect(self.LoginCheck)
self.logout_pushButton.clicked.connect(login.close)
def LoginCheck(self): # Процесс авторизации пользователя
username = self.login_lineEdit.text()
password = self.password_lineEdit.text()
connection = sqlite3.connect("login.db")
result = connection.execute("SELECT * FROM USERS WHERE Логин = ? AND Пароль = ?", (username, password))
if (len(result.fetchall()) > 0):
self.Admin()
else:
self.showMessageBox('Ошибка авторизации пользователя', 'Введенные вами данные неверны. Введите правильный пароль и логин или обратитесь к администратору.')
def Admin(self): # Открывает Окно Системы Менеджмента Пользователей для Администратора
login.close()
self.newWin = Management()
self.newWin.ManagWindowShow().show() # Если убрать ManagWindowShow() он выдает ошибку AttributeError: 'Management' object has no attribute 'show'
def showMessageBox(self, title, message): # Выводит сообщение о неверной авторизации
msgBox = QtWidgets.QMessageBox()
# вызов MsgBox
class Management(Modules.SystemOfUsersManagement.Ui_Admin):
def ManagWindowShow(self): # Показывает форму второго окна
self.AdminWindow = QtWidgets.QMainWindow()
self.ui = Modules.SystemOfUsersManagement.Ui_Admin()
self.ui.setupUi(self.AdminWindow)
self.AdminWindow.show()
def setupUi(self, adm):
Modules.SystemOfUsersManagement.Ui_Admin.setupUi(self, adm)
self.exit_pushButton.clicked.connect(self.Back) # Возвращение к окну авторизации
def Back(self): # Возвращает к окну авторизации пользователя
AdminWindow.close()
OldWin = Ui_login()
OldWin.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
login = QtWidgets.QMainWindow()
ui = Ui_login()
ui.setupUi(login)
login.show()
sys.exit(app.exec_())
И вот код суперкласса Ui_Admin у которого дочерний класс Management. Однако думаю он не особо нужен для решения проблемы:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Admin(object):
def setupUi(self, Admin):
Admin.setObjectName("Admin")
# Идет много кода
def retranslateUi(self, Admin):
_translate = QtCore.QCoreApplication.translate
# Идет много кода
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Admin = QtWidgets.QMainWindow()
ui = Ui_Admin()
ui.setupUi(Admin)
Admin.show()
sys.exit(app.exec_())
2)В случае если я хочу создать нового пользователя для этой программы без прав администратора, чтобы он заходил в третье окно, которое я пока не создал, при этом чтобы он не заходил во второе окно для администратора класса Management, как его можно отделить от администратора? Вот здесь допустим я создам нового обычного пользователя:
import sqlite3
def createTable():
connection = sqlite3.connect("login.db")
connection.execute("CREATE TABLE USERS (Логин TEXT NOT NULL, Пароль TEXT)")
connection.execute("INSERT INTO USERS VALUES (?, ?)", ("Администратор", "Администратор"))
connection.execute("INSERT INTO USERS VALUES (?, ?)", ("Пользователь", "Пользователь"))
connection.commit()
result = connection.execute("SELECT * FROM USERS")
for data in result:
print("Логин : ", data[0])
print("Пароль : ", data[1])
connection.close()
createTable()
А в коде окна первого вопроса, т. е. в методе def LoginCheck класса Ui_login идет процесс авторизации администратора. Для авторизации обычного пользователя будет нужно создать новый метод или в методе авторизации администратора вести условный оператор if с условием разделения на обычного пользователя и администратора? Как можно это примерно реализовать?