Untitled
unknown
python
2 years ago
7.3 kB
11
Indexable
import sys
import psycopg2
from PyQt5.uic import loadUi
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QDialog, QMainWindow, QApplication, QStackedWidget, QGridLayout, QFrame, QLabel, QWidget, QMessageBox, QPushButton, QVBoxLayout
from ui_staff import StaffTab
from ui_schedule1 import ScheduleTab
from ui_login import Ui_Form
from wesdw import widgets # Ensure this imports the correct widget class
# Database connection setup
conn = psycopg2.connect(host='localhost', dbname='insurgents', user='postgres', password='123456', port='5432')
cur = conn.cursor()
class AddSchedScreen(QWidget): # Changed to QWidget
def __init__(self, stacked_widget, date):
super(AddSchedScreen, self).__init__()
self.stacked_widget = stacked_widget
self.date = date
self.setMinimumSize(1006, 575)
self.setWindowTitle('Add Schedule Screen')
# Use the MainWindow content from grip.py
self.initUI()
def initUI(self):
grid_layout = QGridLayout(self) # Creating a grid layout
self.frame2 = QFrame(self)
self.frame = QFrame(self)
self.frame2.setStyleSheet("background-color:#f2f2f2;")
# Create the back button
self.back_button = QPushButton("Back", self.frame2)
self.back_button.setStyleSheet("background-color: #B10303; color: white; padding: 5px 10px; border-radius: 5px;")
self.back_button.setMinimumSize(QSize(50, 30))
# Add layout manager to frame2
self.frame2_layout = QVBoxLayout(self.frame2)
self.frame2_layout.addWidget(self.back_button)
self.block = QLabel(self.frame)
self.frame.setStyleSheet("background-color: #ECE6E6;")
self.block.setStyleSheet("background-color: green;")
self.f = widgets(self.date, self.frame)
self.f.setStyleSheet("background-color:lightgrey;")
grid_layout.addWidget(self.frame, 1, 0)
grid_layout.addWidget(self.frame2, 0, 0)
self.setLayout(grid_layout)
# Connect the back button to the slot or function
self.back_button.clicked.connect(self.on_back_button_clicked)
def on_back_button_clicked(self):
# Find the ScheduleScreen and set it as the current widget
for i in range(self.stacked_widget.count()):
widget = self.stacked_widget.widget(i)
if isinstance(widget, ScheduleScreen):
self.stacked_widget.setCurrentIndex(i)
return
def resizeEvent(self, event):
frame_width = int(self.height() * 0.8)
self.frame.setFixedHeight(frame_width)
self.f.setGeometry(0, 0, int(self.frame.width()), int(self.frame.height()))
button_width = min(int(self.frame2.width() * 0.2), 100) # Set a maximum width for the button
button_height = int(button_width * 0.4) # Adjust the height proportionally
self.back_button.setFixedSize(button_width, button_height)
super().resizeEvent(event) # Ensure the base class resizeEvent is also called
class StaffScreen(QMainWindow): # Changed to QMainWindow
def __init__(self, stacked_widget):
super(StaffScreen, self).__init__()
self.ui = StaffTab()
self.ui.setupUi(self) # Set up the UI
self.stacked_widget = stacked_widget
self.ui.schedbtn.clicked.connect(self.open_schedule) # Connect to the open_schedule method
def open_schedule(self):
sched = self.get_schedule_screen()
self.stacked_widget.setCurrentWidget(sched)
def get_schedule_screen(self):
# Check if ScheduleScreen already exists in stacked_widget
for i in range(self.stacked_widget.count()):
widget = self.stacked_widget.widget(i)
if isinstance(widget, ScheduleScreen):
return widget
# If not, create a new one
sched = ScheduleScreen(self.stacked_widget)
self.stacked_widget.addWidget(sched)
return sched
class ScheduleScreen(QMainWindow):
def __init__(self, stacked_widget):
super(ScheduleScreen, self).__init__()
self.ui = ScheduleTab()
self.ui.setupUi(self) # Set up the UI
self.stacked_widget = stacked_widget
self.add_sched_screen = None
# Ensure the button is correctly referenced
if hasattr(self.ui, 'staffbtn'):
self.ui.staffbtn.clicked.connect(self.open_staff)
else:
print("Error: 'staffbtn' not found in UI setup")
self.ui.calendarWidget.selectionChanged.connect(self.ui.printSelectedDate)
self.ui.addschedbtn.clicked.connect(self.open_addsched)
def open_staff(self):
staff = self.get_staff_screen()
self.stacked_widget.setCurrentWidget(staff)
def get_staff_screen(self):
# Check if StaffScreen already exists in stacked_widget
for i in range(self.stacked_widget.count()):
widget = self.stacked_widget.widget(i)
if isinstance(widget, StaffScreen):
return widget
# If not, create a new one
staff = StaffScreen(self.stacked_widget)
self.stacked_widget.addWidget(staff)
return staff
def open_addsched(self):
# Remove existing AddSchedScreen if it exists
if self.add_sched_screen is not None:
self.stacked_widget.removeWidget(self.add_sched_screen)
self.add_sched_screen.deleteLater()
self.add_sched_screen = None
date = self.ui.selected_date
self.add_sched_screen = AddSchedScreen(self.stacked_widget, date)
self.stacked_widget.addWidget(self.add_sched_screen)
self.stacked_widget.setCurrentWidget(self.add_sched_screen)
class LoginScreen(QDialog):
def __init__(self, stacked_widget):
super(LoginScreen, self).__init__()
self.ui = Ui_Form() # Instantiate the UI class
self.ui.setupUi(self) # Set up the UI
self.stacked_widget = stacked_widget
self.ui.btnLogin.clicked.connect(self.loginfunction)
def loginfunction(self):
user = self.ui.inputEmail.text()
password = self.ui.inputPass.text()
cur.execute("""SELECT password FROM users WHERE username = %s""", (user,))
result_pass = cur.fetchone()
if len(user) == 0 and len(password) == 0:
self.ui.error.setText('Input all field')
else:
if result_pass and result_pass[0] == password:
self.open_staff()
else:
self.ui.error.setText('Invalid Email or Password')
def open_schedule(self):
sched = ScheduleScreen(self.stacked_widget) # Pass the stacked widget instance
self.stacked_widget.addWidget(sched)
self.stacked_widget.setCurrentWidget(sched)
def open_staff(self):
staff = StaffScreen(self.stacked_widget)
self.stacked_widget.addWidget(staff)
self.stacked_widget.setCurrentWidget(staff)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = QStackedWidget()
login = LoginScreen(widget)
widget.addWidget(login)
widget.show()
sys.exit(app.exec_())
Editor is loading...
Leave a Comment