likes
comments
collection
share

打造专属手机助手:用 PyQt6 玩转 ADB前言 前段时间一直有在学习pyqt的相关知识,这次正好赶上《“码” 上双

作者站长头像
站长
· 阅读数 29

前言

前段时间一直有在学习pyqt的相关知识,这次正好赶上《“码” 上双节,共话精彩 ——豆包MarsCode 放“码”过来!》创意征文活动, 借此机会借助豆包MarsCode开发一款便捷使用ADB的小工具。

功能设计

结合工作中使用场景,平常比较常用的abd命令,无非是获取设备、安装、卸载、获取设备名称、分辨率、日志、截图等, 我打算界面分三部分:

  1. 左侧控制台:主要用来获取设备、安装、卸载等
  2. 中间控制台:主要用来输出adb命令执行结果
  3. 右侧控制台:主要用来操作截图、获取设备信息等 整体布局采用:网格布局QGridLayout。

功能实现

窗口设置

self.setWindowTitle('Mobile Tool')
self.setGeometry(100, 100, 1000, 600)

这两行代码设置了窗口的标题和大小。窗口的标题被设置为"Mobile Tool",窗口的初始位置被设置为屏幕上的(100, 100)坐标,窗口的大小被设置为1000像素宽,600像素高。

主布局设置

main_widget = QWidget()
main_layout = QGridLayout(main_widget)

这里创建了一个QWidget作为主窗口的容器,并设置了一个QGridLayout作为主布局。QGridLayout是一种网格布局管理器,它可以将窗口分成若干行和列,并将控件放置在这些网格中。

左侧控制台

布局
group_box_left = QGroupBox(main_widget)
group_box_left.setTitle('左侧控制台')
left_layout = QGridLayout(group_box_left)

创建了一个QGroupBox作为左侧控制台的容器,并设置了其标题为"左侧控制台"。然后创建了一个QGridLayout作为左侧控制台的布局管理器。

控件
device_type_label = QLabel('设备类型')
device_type_combo = QComboBox()
device_type_combo.addItems(["Android", "iOS"])

创建了一个QLabel用于显示"设备类型"的标签,以及一个QComboBox用于选择设备类型,并且添加了"Android"和"iOS"两个选项。

get_device_btn = QPushButton('获取设备')
get_device_btn.clicked.connect(lambda: self.get_devices())
self.device_id_combo = QComboBox()

创建了一个QPushButton用于触发获取设备的操作,并将其clicked信号连接到self.get_devices()方法。同时创建了一个QComboBox用于显示获取到的设备ID列表。

batch_install_btn = QPushButton('批量安装')
batch_uninstall_btn = QPushButton('批量卸载')
stop_task_btn = QPushButton('停止任务')
clear_data_Btn = QPushButton('清空数据')

创建了几个按钮,分别用于批量安装、批量卸载、停止任务和清空数据操作。

note_label = QLabel('备注:请先选择设备类型,再点击获取设备按钮,然后再点击批量安装或批量卸载按钮。')
note_label.setFont(QFont('Arial', 16))
note_label.setWordWrap(True)

创建了一个备注标签,用于提示用户如何使用该工具。设置了字体为Arial,大小为16,并启用了自动换行。

左侧控制台布局添加控件:
left_layout.addWidget(device_type_label, 0, 0, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)
left_layout.addWidget(device_type_combo, 0, 1, 1, 3, alignment=Qt.AlignmentFlag.AlignTop)
left_layout.addWidget(get_device_btn, 1, 0, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)
left_layout.addWidget(self.device_id_combo, 1, 1, 1, 3, alignment=Qt.AlignmentFlag.AlignTop)
left_layout.addWidget(batch_install_btn, 2, 0, 1, 3)
left_layout.addWidget(batch_uninstall_btn, 3, 0, 1, 3)
left_layout.addWidget(stop_task_btn, 4, 0, 1, 3)
left_layout.addWidget(clear_data_Btn, 5, 0, 1, 3)
left_layout.addWidget(note_label, 6, 0, 1, 5, alignment=Qt.AlignmentFlag.AlignTop)

将之前创建的控件添加到左侧控制台的布局中,并设置了它们在网格中的位置和对齐方式。

主布局添加左侧控制台:
main_layout.addWidget(group_box_left, 0, 0, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)

将左侧控制台的QGroupBox添加到主布局的(0, 0)位置,并设置了对齐方式为顶部对齐。

中间控制台

布局
group_box_center = QGroupBox(main_widget)
group_box_center.setTitle('中间控制台')
center_layout = QGridLayout(group_box_center)

创建了一个QGroupBox作为中间控制台的容器,并设置了其标题为"中间控制台"。然后创建了一个QGridLayout作为中间控制台的布局管理器。

控件
self.devices_text = QPlainTextEdit()
self.devices_text.setMaximumBlockCount(50000)

创建了一个 QPlainTextEdit 组件,用于显示执行命令的结果。设置了 QPlainTextEdit 的最大行数为 50000。

中间控制台布局添加控件:
center_layout.addWidget(self.devices_text, 0, 0, 1, 4, alignment=Qt.AlignmentFlag.AlignTop)

将之前创建的控件添加到中间控制台的布局中,并设置了它们在网格中的位置和对齐方式。

主布局添加中间控制台:
main_layout.addWidget(group_box_center, 0, 1, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)

将中间控制台的QGroupBox添加到主布局的(0, 1)位置,并设置了对齐方式为顶部对齐

右侧控制台

布局
group_box_right = QGroupBox(main_widget)
group_box_right.setTitle('右侧控制台')
right_layout = QGridLayout(group_box_right)

创建了一个QGroupBox作为右侧控制台的容器,并设置了其标题为"右侧控制台"。然后创建了一个QGridLayout作为右侧控制台的布局管理器。

控件及布局添加控件
system_info_label = QLabel('常用功能')
system_info_label.setFont(QFont('Arial', 16, QFont.Weight.Bold))
right_layout.addWidget(system_info_label, 0, 0, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)

for index, info in enumerate(["获取手机名称", "获取手机型号", "获取手机分辨率", "获取手机日志", "崩溃日志", "截图"]):
    btn = QPushButton(info)
    right_layout.addWidget(btn, index + 1, 0, 1, 3, alignment=Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft)

创建了一个QLabel组件,并设置了其文本内容为"常用功能",设置了标签的字体为Arial,大小为16,并且加粗显示。 将标签添加到右侧控制台的网格布局(right_layout)中,位于第0行第0列,占用1行1列,并设置对齐方式为顶部对齐。 使用了一个for循环来创建六个按钮,每个按钮的文本内容分别为"获取手机名称"、"获取手机型号"、"获取手机分辨率"、"获取手机日志"、"崩溃日志"和"截图"。这些按钮被添加到右侧控制台的网格布局中,从第1行开始,占用1行3列,并设置对齐方式为顶部对齐和左对齐。

主布局添加中间控制台:
main_layout.addWidget(group_box_right, 0, 2, 1, 1, alignment=Qt.AlignmentFlag.AlignTop)

将右侧控制台的QGroupBox添加到主布局的(0, 2)位置,并设置了对齐方式为顶部对齐

设置主布局

self.setLayout(main_layout)

将主布局设置为主窗口的布局。

效果展示

代码编写完成,在豆包中点击运行时,截图所示

打造专属手机助手:用 PyQt6 玩转 ADB前言 前段时间一直有在学习pyqt的相关知识,这次正好赶上《“码” 上双 发现报错了,AI提供的解决方案是缺少图形驱动,暂时还没有解决,把代码复制到本地执行,效果如下

打造专属手机助手:用 PyQt6 玩转 ADB前言 前段时间一直有在学习pyqt的相关知识,这次正好赶上《“码” 上双 然后插上安卓设备,点击获取设备,效果如下

打造专属手机助手:用 PyQt6 玩转 ADB前言 前段时间一直有在学习pyqt的相关知识,这次正好赶上《“码” 上双 其他功能类似

最后

这个小工具还在不断完善中,之后还可以支持iOS设备。整体使用豆包MarsCode的体验还是不错的,可以借助AI帮助快速高效解决编程中遇到额问题。

www.marscode.cn/home?utm_so…

转载自:https://juejin.cn/post/7418378848401670154
评论
请登录