Untitled
unknown
python
10 months ago
7.3 kB
5
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