[PYTHON] [PyQt x pySerial] Zeigen Sie im Kombinationsfeld eine Liste der mit dem PC verbundenen COM-Ports an

Am Anfang

combobox.png

Erstellen Sie auf diese Weise ein Kombinationsfeld mit PyQt, in dem Sie den an Ihren PC angeschlossenen COM-Anschluss auswählen können. Informationen zum Erstellen einer GUI-App mit PyQt und Qt Designer finden Sie unter hier.

Umgebung

Installation

$ pip install pyqt5
$ pip install pyserial

① UI-Datei erstellen

Starten Sie Qt Designer und erstellen Sie ein schönes Widget mit Combo Box.

designer.png

Der Name der Combo Box lautet "Port Combo Box".

port_combo_box_sample.ui


<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>219</width>
    <height>70</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QComboBox" name="portComboBox">
   <property name="geometry">
    <rect>
     <x>30</x>
     <y>20</y>
     <width>171</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

② Konvertieren Sie die UI-Datei in eine Python-Datei

$ pyuic5 port_combo_box_sample.ui > port_combo_box_sample_ui.py

port_combo_box_sample_ui.py


# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'port_combo_box_sample.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(219, 70)
        self.portComboBox = QtWidgets.QComboBox(Form)
        self.portComboBox.setGeometry(QtCore.QRect(30, 20, 171, 22))
        self.portComboBox.setObjectName("portComboBox")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

③ Erstellen Sie die Haupt-GUI-Datei

port_combo_box_sample_gui.py


import sys

from PyQt5.QtWidgets import QMainWindow, QApplication
from serial.tools import list_ports

from port_combo_box_sample_ui import Ui_Form


class PortComboBoxSampleGui(QMainWindow, Ui_Form):
    def __init__(self, parent=None):
        super(PortComboBoxSampleGui, self).__init__(parent)
        self.setupUi(self)
        self._init_port_combo_box()

    def _init_port_combo_box(self):
        comports = list_ports.comports()
        if not comports:
            print("Port nicht gefunden")
            return

        for index, comport in enumerate(comports):
            self.portComboBox.addItem(comport.device)


if __name__ == "__main__":
    argvs = sys.argv
    app = QApplication(argvs)
    main_gui = PortComboBoxSampleGui()
    main_gui.show()
    sys.exit(app.exec_())

Recommended Posts

[PyQt x pySerial] Zeigen Sie im Kombinationsfeld eine Liste der mit dem PC verbundenen COM-Ports an
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Kopieren Sie die Liste in Python
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Anzeigen des regionalen Netzes des Government Statistics Office (eStat) in einem Webbrowser
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Darstellung der Verteilung der Bakterienzusammensetzung aus Qiime2-Analysedaten in einem Box-Whisker-Diagramm
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So zeigen Sie eine bestimmte Dateispalte unter Linux an (awk)
So bestimmen Sie die Existenz eines Selenelements in Python
Zeigen Sie das Bild der an den PC angeschlossenen Kamera auf der GUI an.
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Ich habe den Befehl gegeben, einen farbenfrohen Kalender im Terminal anzuzeigen
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Generieren Sie eine Liste mit der Anzahl der Tage im aktuellen Monat.
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
So formatieren Sie eine Liste von Wörterbüchern (oder Instanzen) in Python
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[Python & SQLite] Ich habe den erwarteten Wert eines Rennens mit Pferden im 1x-Gewinnbereich ① analysiert
Ändern Sie die Liste in der for-Anweisung
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
Fühlen Sie sich frei, einen Test mit der Nase zu schreiben (im Fall von + gevent)
Wie kann man in Go so etwas wie eine Liste von void * (oder Variantentypen) erreichen?
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Versuchen Sie, die Fibonacci-Sequenz im Namen der Algorithmuspraxis in verschiedenen Sprachen anzuzeigen
Ich möchte einen Lebenszyklus in der Aufgabendefinition von ECS festlegen
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Ändern Sie den Datenrahmen der Pandas-Kaufdaten (ID x Produkt) in ein Wörterbuch
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Versuchen Sie, die Eisenbahndaten der nationalen Landnummern in 3D anzuzeigen