from PySide6.QtGui import QFocusEvent from PySide6.QtWidgets import QListWidget, QListWidgetItem from PySide6.QtCore import Qt from codes.common import clibs from codes.common.signal_bus import signal_bus from codes.common.qss_reloader import qss_reloader class SListWidget(QListWidget): def __init__(self, parent=None): super().__init__(parent) self.pre_do() self.init_ui() self.post_do() def pre_do(self): ... def init_ui(self): self.setObjectName("SListWidget") self.setMinimumWidth(150) for item in clibs.listW_items: _ = QListWidgetItem(item) _.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.addItem(_) def post_do(self): qss_reloader.register(clibs.qss_list_widget, self) self.setup_slot() def setup_slot(self): self.itemClicked.connect(self.item_clicked) signal_bus.stacked_page_switch_setting.connect(self.qa_hide) signal_bus.stacked_page_switch_log.connect(self.qa_hide) signal_bus.stacked_page_switch_about.connect(self.qa_hide) signal_bus.list_widget_on_off.connect(self.lw_show_hide) def item_clicked(self, item): page_id = clibs.listW_items[item.text()] signal_bus.list_widget_click.emit(page_id) def lw_show_hide(self, enabled: bool): if enabled: self.clearSelection() self.show() signal_bus.init_stacked_page.emit("w10_practical") else: self.hide() def qa_hide(self): self.hide() signal_bus.qa_switch_change.emit(False) def focusOutEvent(self, event: QFocusEvent): self.clearSelection() super().focusOutEvent(event)