コード例 #1
0
class StatusbarUI(object):
    def __init__(self, main_window: QMainWindow):
        """
        状态栏
        外观模式
        :param main_window:
        """
        self.main_window = main_window

        self.statusbar = QStatusBar(self.main_window)

        self.ui_list = []
        self.show_time = ShowTime(self.statusbar, 1)  # 时间模块
        self.placeholder = Placeholder(self.statusbar, 2)  # 占位符
        self.net_speed = NetSpeed(self.statusbar, -4)  # 网速
        self.monitor_port = MonitorPort(self.statusbar, -3)  # 监听端口
        self.online_host = OnlineHost(self.statusbar, -1)  # 上线主机

    def options(self) -> None:
        font = QFont()
        font.setPointSize(10)
        self.statusbar.setFont(font)

        # self.statusbar.setGeometry(QtCore.QRect(0, 0, 900, 50))
        self.statusbar.setFixedHeight(30)
        self.main_window.setStatusBar(self.statusbar)
        # self.main_window.setStatusBar()
        # self.statusbar.setContextMenuPolicy(Qt.DefaultContextMenu)

    def setup_ui(self) -> None:
        self.statusbar.setObjectName("statusbar")
        self.options()

        self.load_ui()
        self.show_ui()

        if not settings.STATUSBAR_SHOW:
            self.statusbar.setHidden(False)

    # noinspection PyArgumentList
    def retranslate_ui(self) -> None:
        self.statusbar.setWindowTitle(_translate("StatusbarUI", "状态栏"))

    def load_ui(self) -> None:
        """
        加载模块
        :return:
        """
        self.ui_list.append(self.show_time)
        self.ui_list.append(self.placeholder)
        self.ui_list.append(self.net_speed)
        self.ui_list.append(self.monitor_port)
        self.ui_list.append(self.online_host)

    def show_ui(self) -> None:
        """
        显示数据
        :return:
        """
        for view in self.ui_list:
            view.setup_ui()
            view.retranslate_ui()