Пример #1
0
    def add_track_row(self, track):
        """
        Adds a track row to the tracks table model.

        Args:
            track: Track label and trace

        Returns:
            id_item
            status_item
            age_item
        """
        id_item = QStandardItem()
        id_item.setText(track[0])
        id_item.setBackground(QBrush(QColor(
            get_random_color(int(track[0]))
        )))
        id_item.setEditable(False)

        status_item = QStandardItem()
        status_item.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)
        status_item.setEditable(False)

        age_item = QStandardItem()
        age_item.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter)
        age_item.setEditable(False)

        self.tracks_model.appendRow([id_item, status_item, age_item])
        self.tracks_model.sort(0)
        return id_item, status_item, age_item
Пример #2
0
    def get_table_model(self, table_data: str):

        data = eval(table_data)

        n_machine = len(data)  # 机器数量
        error_number = ""  # 有问题机器编号
        table_model = QStandardItemModel()

        yellow = QColor(255, 255, 0)
        orange = QColor(255, 97, 0)
        #
        # 填充 table_model
        #
        for machine_number in range(1, n_machine + 1):
            i, j = self.get_row_col(machine_number)

            if data[machine_number][0] != 0:
                error_number += str(machine_number) + " "

            error_code_item = QStandardItem(str(data[machine_number][0]))
            error_code_item.setEditable(False)
            break_code = data[machine_number][0]
            if 0 < break_code <= 10:
                error_code_item.setBackground(QBrush(yellow))
            elif break_code == 255:
                error_code_item.setBackground(QBrush(orange))
            t0 = QStandardItem("%d号跟踪器故障代码" % (machine_number))
            t0.setEditable(False)

            table_model.setItem(i, j, t0)
            table_model.setItem(i, j + 1, error_code_item)

            t1 = QStandardItem("%d号跟踪器控制代码" % (machine_number))
            t1.setEditable(False)
            item1 = QStandardItem(str(data[machine_number][1]))
            item1.setEditable(False)

            table_model.setItem(i + 1, j, t1)
            table_model.setItem(i + 1, j + 1, item1)

            t2 = QStandardItem("%d号跟踪器锁状态" % (machine_number))
            t2.setEditable(False)
            item2 = QStandardItem(str(data[machine_number][2]))
            item2.setEditable(False)

            table_model.setItem(i + 2, j, t2)
            table_model.setItem(i + 2, j + 1, item2)

            t3 = QStandardItem("%d号跟踪器实时角度" % (machine_number))
            t3.setEditable(False)
            item3 = QStandardItem(str(data[machine_number][3]))
            item3.setEditable(False)

            table_model.setItem(i + 3, j, t3)
            table_model.setItem(i + 3, j + 1, item3)

        return table_model, error_number
Пример #3
0
    def load(self, history):

        responses = history['response_history']

        self.response_history.setSortingEnabled(False)

        for response in responses:
            if response not in self.existing_responses:
                self.response_rows.insertRow(0)
                timestamp = QStandardItem()
                timestamp.setData(response[0], QtCore.Qt.EditRole)
                self.response_rows.setItem(0, 0, timestamp)
                transaction_id = QStandardItem()
                transaction_id.setData(response[1], QtCore.Qt.EditRole)
                self.response_rows.setItem(0, 1, transaction_id)
                unit_address = QStandardItem()
                unit_address.setData(response[2], QtCore.Qt.EditRole)
                self.response_rows.setItem(0, 2, unit_address)
                function_code = QStandardItem()
                function_code.setData(response[3], QtCore.Qt.EditRole)
                self.response_rows.setItem(0, 3, function_code)
                data = QStandardItem()
                data.setData(str(response[4]), QtCore.Qt.EditRole)
                self.response_rows.setItem(0, 4, data)
                if response[3] in [x.value for x in ErrorCodes]:
                    error_color = QtGui.QColor(255, 114, 111)
                    timestamp.setBackground(error_color)
                    transaction_id.setBackground(error_color)
                    unit_address.setBackground(error_color)
                    function_code.setBackground(error_color)
                    data.setBackground(error_color)

        self.response_history.setModel(self.response_rows)

        self.existing_responses = self.existing_responses | set(responses)
        self.response_history.setSortingEnabled(True)

        requests = history['request_history']
        self.request_history.setSortingEnabled(False)
        for request in requests:
            if request not in self.existing_requests:
                self.request_rows.insertRow(0)
                timestamp = QStandardItem()
                timestamp.setData(request[0], QtCore.Qt.EditRole)
                self.request_rows.setItem(0, 0, timestamp)
                transaction_id = QStandardItem()
                transaction_id.setData(request[1], QtCore.Qt.EditRole)
                self.request_rows.setItem(0, 1, transaction_id)
                unit_address = QStandardItem()
                unit_address.setData(request[2], QtCore.Qt.EditRole)
                self.request_rows.setItem(0, 2, unit_address)
                function_code = QStandardItem()
                function_code.setData(request[3], QtCore.Qt.EditRole)
                self.request_rows.setItem(0, 3, function_code)
                data = QStandardItem()
                data.setData(str(request[4]), QtCore.Qt.EditRole)
                self.request_rows.setItem(0, 4, data)
                if request[3] in [x.value for x in ErrorCodes]:
                    error_color = QtGui.QColor(255, 114, 111)
                    timestamp.setBackground(error_color)
                    transaction_id.setBackground(error_color)
                    unit_address.setBackground(error_color)
                    function_code.setBackground(error_color)
                    data.setBackground(error_color)

        self.request_history.setModel(self.request_rows)

        self.existing_requests = self.existing_requests | set(requests)
        self.request_history.setSortingEnabled(True)
Пример #4
0
if __name__ == '__main__':
    app = QApplication(sys.argv)
    model_size = 100000
    list = []
    source_model = QStandardItemModel()
    horizontal_header_list = [
        "First Column with spacing", "Second Column with spacing"
    ]
    source_model.setHorizontalHeaderLabels(horizontal_header_list)
    for i in range(model_size):
        first_item = QStandardItem("FancyTextNumber {}".format(i))
        if i == 0:
            first_item.appendRow(add_child(2, 2))
        second_item = QStandardItem("FancyRow2TextNumber {}".format(i))
        if i % 2 == 0:
            first_item.setBackground(Qt.red)
        row = [first_item, second_item]
        source_model.invisibleRootItem().appendRow(row)
        list.append("FancyTextNumber {}".format(i))

    # Needed by QMLModelViewClient
    role_names = {
        Qt.DisplayRole: QByteArray(b'_text'),
        Qt.BackgroundRole: QByteArray(b'_color')
    }
    source_model.setItemRoleNames(role_names)

    roles = [Qt.DisplayRole, Qt.BackgroundRole]

    print("Creating registry host")
    node = QRemoteObjectRegistryHost(QUrl("local:registry"))