PyQt UI控制树莓派硬件

PyQt有两个版本,一开始是第三方的PyQt,后来Qt官方推出了PySide,两者在大多数API上类似,有小部分代码有差异,基本上可以互用,这里使用PyQt。

测试平台: Raspbian-bookworm-arm64.

1. 安装工具

$ sudo apt install python3-pyqt6 python3-gpiozero

2. Blink

接线: LED --> GPIO 3.

设计了一个toggle button,按下去灯亮,弹起来灯灭:

import sys
from gpiozero import LED
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QApplication, \
    QWidget, QVBoxLayout, QPushButton


def toggleClicked(button: QPushButton):
# {
    if button.isChecked():
        led.value = 1
        print('LED on.')
    else:
        led.value = 0
        print('LED off.')
# }


def createToggleButton() -> QPushButton:
# {
    button = QPushButton()

    button.setText('OFF')
    button.setFixedSize(100, 30)
    button.setCheckable(True)
    button.setStyleSheet('background-color: red')

    return button
# }


# QPushButton API : <https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QPushButton.html>
def main():
# {
    app    = QApplication([])
    widget = QWidget()

    # Create toggle button.
    btnToggle = createToggleButton()
    btnToggle.clicked.connect(lambda: toggleClicked(btnToggle))

    # Layout.
    layout = QVBoxLayout()
    layout.addWidget(btnToggle)
    layout.setAlignment(Qt.AlignmentFlag.AlignCenter)

    # Widget.
    widget.setLayout(layout)
    widget.setFixedSize(300, 200)
    widget.show()

    sys.exit(app.exec())
# }


if '__main__' == __name__:
    # Create global led device.
    led = LED(3)

    main()

运行后,使用PyQt UI通过GPIO Zero控制LED亮灭.

posted @ 2025-05-14 12:29  this毛豆  阅读(83)  评论(0)    收藏  举报