58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			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) |