import psycopg2 from login import * from PyQt5.QtWidgets import QApplication, QMainWindow import sys from interface import * from activemanager import ActivityManager # 导入活动管理类 import config from activearrangement import Active_arrangement from store import Store NONE = None class LoginWindow(QMainWindow): def __init__(self): super().__init__() # 调用父类的初始化方法 self.ui = Ui_LoginWindow() # 创建一个 UI 界面的实例 self.ui.setupUi(self) # 设置 UI 界面 # 去掉窗口边框 self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 设置窗口为无边框模式 self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 设置窗口背景为透明 # 创建阴影效果 self.shadow = QtWidgets.QGraphicsDropShadowEffect(self) # 创建一个阴影效果对象 self.shadow.setOffset(0, 0) # 设置阴影偏移量为 (0, 0) self.shadow.setBlurRadius(10) # 设置阴影模糊半径为 10 像素 self.shadow.setColor(QtCore.Qt.black) # 设置阴影颜色为黑色 self.ui.frame.setGraphicsEffect(self.shadow) # 将阴影效果应用到指定的框架 (frame) # 设置样式表,去掉边框并设置透明背景 self.setStyleSheet("background-color: rgba(255, 255, 255, 0); border: none;") # 设置窗口背景为完全透明,并去掉边框 # 强制窗口固定大小 # self.setFixedSize(self.size()) # (注释掉的代码)如果需要,可以取消注释以固定窗口大小为当前大小 self.ui.pushButton_Login.clicked.connect(lambda: self.ui.stackedWidget_2.setCurrentIndex(0)) self.ui.pushButton_Register.clicked.connect(lambda: self.ui.stackedWidget_2.setCurrentIndex(1)) self.ui.PushButtom_L_sure.clicked.connect(self.login) self.ui.QPushButtom_R_sure.clicked.connect(self.register) self.show() # 显窗口 def register(self): account = self.ui.LineEdit_R_account.text() password = self.ui.LineEdit_R_password.text() password1 = self.ui.LineEdit_R_password1.text() global user_now if len(account) == 0 or len(password ) == 0 or len(password1) == 0: self.ui.stackedWidget.setCurrentIndex(3) elif password1 != password: self.ui.stackedWidget.setCurrentIndex(1) else: conn = psycopg2.connect(database="DataMY", user="postgres", password="822520", host="127.0.0.1", port="5432") cur = conn.cursor() # 查询现有账户 cur.execute("SELECT accounts FROM users") existing_accounts = cur.fetchall() # 获取所有账户 account_list = [row[0] for row in existing_accounts] # 提取账户名列表 if account in account_list: self.ui.stackedWidget.setCurrentIndex(6) # 账户已存在 else: # 插入新账户,并获取新用户的userid cur.execute("INSERT INTO users (accounts, passwords) VALUES (%s, %s) RETURNING userid", (account, password)) new_user_id = cur.fetchone()[0] # 获取新插入的用户ID # 插入用户积分,假设初始积分为 0 initial_points = 0 cur.execute("INSERT INTO user_points (user_id, total_points) VALUES (%s, %s)", (new_user_id, initial_points)) conn.commit() # 提交更改 self.ui.stackedWidget.setCurrentIndex(2) # 注册成功页面 def login(self): # 获取用户输入的账户和密码 account = self.ui.LineEdit_L_account.text() password = self.ui.LineEdit_L_password.text() # 检查账户或密码是否为空 if len(account) == 0 or len(password) == 0: self.ui.stackedWidget.setCurrentIndex(3) # 显示错误消息,提示账户或密码不能为空 return try: # 连接数据库 conn = psycopg2.connect(database="DataMY", user="postgres", password="822520", host="127.0.0.1", port="5432") cur = conn.cursor() # 查询用户账户和密码 cur.execute("SELECT userid, accounts, passwords FROM users WHERE accounts = %s", (account,)) row = cur.fetchone() if row: user_id, db_account, db_password = row # 验证账户和密码是否匹配 if account == db_account and password == db_password: config.user_now = user_id # 将用户ID存储在全局变量中 self.win = MainWindow() # 打开主窗口 self.win.show() # 显示主窗口 self.close() # 关闭登录窗口 else: self.ui.stackedWidget.setCurrentIndex(7) # 显示错误消息,提示账户或密码错误 else: self.ui.stackedWidget.setCurrentIndex(7) # 显示错误消息,提示账户不存在 conn.commit() except Exception as e: print(f"Error logging in: {e}") finally: # 关闭数据库连接 if conn: conn.close() class MainWindow(QMainWindow): def __init__(self): super().__init__() self.ui = Ui_MainWindow() # 假设 Ui_MainWindow 已经定义 self.ui.setupUi(self) # 设置窗口属性 self.setWindowFlag(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.setStyleSheet("background-color: rgba(255, 255, 255, 0); border: none;") # 创建活动管理实例 self.activity_manager = ActivityManager(self.ui) self.activity_arrangement = Active_arrangement(self.ui) self.Store = Store(self.ui) # 初始化拖动相关变量 self.mouse_press_pos = None # 连接信号和槽 self.setup_signals() self.activity_manager.load_data() # 使用活动管理类加载数据 self.Store.setup_ui() self.Store.load_data() self.Store.load_user_info() self.show() # 显示窗口 def setup_signals(self): self.ui.pushButton_active_manage.clicked.connect(lambda: self.ui.stackedWidget.setCurrentIndex(0)) self.ui.pushButton_active_arrange.clicked.connect(lambda: self.ui.stackedWidget.setCurrentIndex(1)) self.ui.pushButton_home.clicked.connect(lambda: self.ui.stackedWidget.setCurrentIndex(2)) self.ui.pushButton_profile.clicked.connect(lambda: self.ui.stackedWidget.setCurrentIndex(4)) self.ui.pushButton_store.clicked.connect(lambda: (self.ui.stackedWidget.setCurrentIndex(3), self.Store.load_user_info())) self.ui.pushButton_logout.clicked.connect(self.logout) self.ui.pushButton_m_sure.clicked.connect(self.change_password) self.ui.pushButton_creat_active.clicked.connect(self.activity_manager.create_activity) # 更新为活动管理方法 self.ui.pushButton_correct_active.clicked.connect(self.activity_manager.update_activity) # 更新为活动管理方法 self.ui.pushButton_delete_active.clicked.connect( self.activity_manager.delete_activity) # 传递活动ID self.ui.pushButton_baoming.clicked.connect(self.activity_manager.register_activity) self.ui.active_table.cellClicked.connect(self.activity_manager.handle_double_click) # 连接双击事件 self.ui.pushButton_4.clicked.connect(self.activity_manager.search) self.ui.pushButton_5.clicked.connect(self.activity_manager.view_registered_activities) self.ui.pushButton_6.clicked.connect(self.activity_manager.load_data) def mousePressEvent(self, event): if event.button() == QtCore.Qt.LeftButton and self.ui.frame_4.geometry().contains(event.pos()): self.mouse_press_pos = event.globalPos() - self.pos() event.accept() def mouseMoveEvent(self, event): if self.mouse_press_pos is not None: self.move(event.globalPos() - self.mouse_press_pos) event.accept() def mouseReleaseEvent(self, event): if event.button() == QtCore.Qt.LeftButton: self.mouse_press_pos = NONE event.accept() def logout(self): global user_now self.close() self.login = LoginWindow() # 假设 LoginWindow 已经定义 user_now = '' def change_password(self): global user_now password = self.ui.lineEdit_password.text() confirm_password = self.ui.lineEdit_password2.text() if not password or not confirm_password: self.ui.stackedWidget_2.setCurrentIndex(1) # 显示错误消息 return if password == confirm_password: try: with psycopg2.connect(database="DataMY", user="postgres", password="822520", host="127.0.0.1", port="5432") as conn: with conn.cursor() as cur: cur.execute("UPDATE users SET passwords = %s WHERE accounts = %s", (password, user_now)) conn.commit() self.ui.stackedWidget_2.setCurrentIndex(2) # 显示成功消息 except Exception as e: print(f"Error changing password: {e}") self.ui.stackedWidget_2.setCurrentIndex(1) if __name__ == '__main__': app = QApplication(sys.argv) win = LoginWindow() sys.exit(app.exec_())