[PYTHON] [PyQt x pySerial] Afficher une liste des ports COM connectés au PC dans la liste déroulante

Au début

combobox.png

Comme ça, créez une combo box avec PyQt qui vous permet de sélectionner le port COM connecté à votre PC. Voir ici pour savoir comment créer une application GUI à l'aide de PyQt et Qt Designer.

environnement

Installation

$ pip install pyqt5
$ pip install pyserial

① Créer un fichier d'interface utilisateur

Démarrez Qt Designer et créez un joli widget avec Combo Box.

designer.png

Le nom de la Combo Box est "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>

② Convertir le fichier UI en fichier Python

$ 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"))

③ Créez le fichier GUI principal

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 introuvable")
            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] Afficher une liste des ports COM connectés au PC dans la liste déroulante
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Je souhaite trier une liste dans l'ordre des autres listes
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
Copiez la liste en Python
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Obtenez le nombre d'éléments spécifiques dans la liste python
Comment afficher une liste des versions installables avec pyenv
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment afficher une colonne de fichiers spécifiée sous Linux (awk)
Comment déterminer l'existence d'un élément sélénium en Python
Affichez l'image de la caméra connectée à l'ordinateur personnel sur l'interface graphique.
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
J'ai fait une commande pour afficher un calendrier coloré dans le terminal
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Générez une liste contenant le nombre de jours du mois en cours.
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ①
Changer la liste dans l'instruction for
Différentes façons de lire la dernière ligne d'un fichier csv en Python
N'hésitez pas à rédiger un test avec nez (dans le cas de + gevent)
Comment réaliser quelque chose comme une liste de void * (ou de type de variante) dans Go?
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Essayez d'afficher la séquence de Fibonacci dans différentes langues comme pratique d'algorithme
Je souhaite définir un cycle de vie dans la définition de tâche d'ECS
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
Changer le bloc de données des données d'achat de pandas (produit ID X) en dictionnaire
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Essayez d'afficher les données ferroviaires des informations numériques des terres nationales en 3D