Files
Projects/toolbox/codes/ui/components/list_widget_ui.py
2025-10-10 17:16:08 +08:00

58 lines
1.7 KiB
Python

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)