2025.2.25

今天正常上课,把多余的课退掉了,继续忙碌我机器人比赛的软件部分,增添了一个今日情况俯瞰图的界面,原本的情况展示界面去掉了,因为那样的查看情况或许不如直接查看整个田地俯瞰图来的快速,又因为各种原因,例如摄像头清晰度问题,机器人高度问题导致无法直接一次性拍摄出完整的俯瞰图,所以我决定将整片田地进行分开拍摄,并分别导入到程序上,通过图片在程序上的位置达到拼接展示,示例如下:

 相关页面代码如下:

    def setup_status_page(self):
        page = QtWidgets.QWidget()
        layout = QtWidgets.QVBoxLayout(page)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        grid_layout = QtWidgets.QGridLayout()
        grid_layout.setContentsMargins(0, 0, 0, 0)
        grid_layout.setSpacing(0)

        self.status_labels = []
        self.import_buttons = []

        # 定义每张图片的对齐方式
        alignments = [
            QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom,  # 图片1:右下
            QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom,  # 图片2:下中
            QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom,  # 图片3:左下
            QtCore.Qt.AlignRight | QtCore.Qt.AlignTop,  # 图片4:右上
            QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop,  # 图片5:上中
            QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop,  # 图片6:左上
        ]

        # 第一行:导入按钮 1-3
        for i in range(3):
            btn = QtWidgets.QPushButton(f"导入照片 {i+1}")
            btn.setFixedSize(80, 30)
            btn.setStyleSheet("font-size: 12px;")
            btn.clicked.connect(lambda _, idx=i: self.import_status_image(idx))
            self.import_buttons.append(btn)
            grid_layout.addWidget(btn, 0, i)

        # 第二行:图片框 1-3
        for i in range(3):
            label = QtWidgets.QLabel()
            label.setFixedSize(390, 300)
            label.setStyleSheet("""
                border: 1px solid #D3D3D3;
                background-color: white;
            """)
            label.setAlignment(alignments[i])  # 设置对齐方式
            self.status_labels.append(label)
            grid_layout.addWidget(label, 1, i)

        # 第三行:图片框4-6
        for i in range(3, 6):
            label = QtWidgets.QLabel()
            label.setFixedSize(390, 300)
            label.setStyleSheet("""
                border: 1px solid #D3D3D3;
                background-color: white;
            """)
            label.setAlignment(alignments[i])  # 设置对齐方式
            self.status_labels.append(label)
            grid_layout.addWidget(label, 2, i-3)

        # 第四行:导入按钮4-6
        for i in range(3):
            btn = QtWidgets.QPushButton(f"导入照片 {i+4}")
            btn.setFixedSize(80, 30)
            btn.setStyleSheet("font-size: 12px;")
            btn.clicked.connect(lambda _, idx=i+3: self.import_status_image(idx))
            self.import_buttons.append(btn)
            grid_layout.addWidget(btn, 3, i)

        layout.addLayout(grid_layout)
        self.stacked_pages.addWidget(page)

 

posted @ 2025-02-25 20:44  贾贾鱼  阅读(10)  评论(0)    收藏  举报