Des valeurs dynamiques dans fenêtre de PyQt (suivi ISS)

Cette instructable décrit l’utilisation de variables dynamiques dans une fenêtre de PyQt.

QT permet la construction interactives, connectés windows (Ms/Linux/Android/IoS). Py QT permet tel bâtiment en Python. La boucle principale d’un scripts PyQt comprend les méthodes de la fenêtre, à l’aide des fenêtre-variables pré-définies. Mise à jour de ces variables de fenêtre, c’est possible, mais pas une bonne idée si une vaste transformation est nécessaire. Pour la fenêtre de ISS-tracker dans la première capture vidéo, filetage sert à fabriquer une fenêtre de PyQt à travailler avec les variables « extérieur ». Il y a sûrement des autres (et mieux les méthodes), mais celui-ci fonctionne très bien et sa structure « suits ma logique ».

Pour ces deux exemples, la disposition de fenêtre a été créée avec Qt Designer. Alors, s’il vous plaît ne pas tenir compte la quantité de lignes de code dans les deux scripts. Un lay-out de fenêtre pour un grand nombre de champs de mise en forme, nécessite le code déclaratif comme la position sur l’écran, la taille, comment il doit réagir sur max et minimiser la fenêtre, la couleur, le style, contenue, connectée l’action, etc.. Heureusement, Qt Designer génère toutes ces lignes de code basé sur votre mise en page graphique. Malheureusement à la suite de cela, vous vous retrouverez avec un grand nombre de lignes dans votre boucle principale.

Depuis j’ai voulu vous familiariser avec PyQt, I've construire la fenètre de ISS-tracker avec beaucoup de variables et différents types de champs. Pour ceux que cela intéresse, je vais élaborer un peu plus tard sur.

La seconde capture vidéo montre un script très petit et simple pour visualiser l’approche thread. Le script python utilisé se trouvent à: Bitbucket

Le scénario simule la levée d’un dé et traite le résultat des lancers.

Le script utilise deux threads : un thread pour le maintien de l’affichage de la fenêtre (PyQt exige que ce soit la boucle principale du script) et un autre thread de traitement et de déclencher périodiquement la fenêtre threads. Pour échanger des valeurs, les deux threads doivent être pointé vers les mêmes variables en mémoire. Dans des mots encore plus simples : un seul thread traite certaines données, place les résultats dans un endroit spécial, 'sonne à la porte"à la boucle principale de dire il est prêt et fait observer où la nouvelle livraison a été placée.

Donc, nous allons voir comment qui ressemble en Python :

Le script démarre avec l’importation habituelle des bibliothèques nécessaires: « QtCore » pour la création de threads, « QtGui » pour traiter les visuels de la fenêtre, « datetime » et « temps », donc il ne sera pas oublier à ce sujet.

Les deux prochaines déclarations « essayer » sont nécessaires pour le maquillage des zones de l’écran. Ne me dérange pas ces: Qt Designer génère ces lignes dès que vous commencez à utiliser des descripteurs de RTF. (par exemple pour afficher une autre police, couleur, taille, gras/italique, etc. de n’importe quel champ dans la fenêtre, il faut définir un descripteur de texte riche (HTML, par exemple).)

Puis quelques variables globales: « jeter numéro » et « total de tous les lancers » la variable essentielle est la mémoire partagée entre les deux fils, dont j’ai nommé le « stockage reliant » (vieilles habitudes...).

Le stockage reliant ici est une chaîne lorsque toutes les variables doivent être mis en par le thread de traitement et ceux peuvent être lu par la fenêtre-thread.

Un autre de mes anciennes habitudes est un bienfait pour l’utilisation de chaînes. J’ai appris comment cela peut sauver beaucoup de temps lors du débogage de scripts. (Et: Qt préfère les chaînes pour l’affichage.)

La méthode de thread (traitement) génère une valeur aléatoire (ne me dérange pas les manipuler ; J’ai juste essayé de forcer autant volatilité que possible à l’écran), calcule certaines autres valeurs et leur place dans la chaîne 'LinkingStorage'.

La classe « trigger » 'sonne la cloche"à la boucle principale. Il est appelé par Qthread et crée et émet un signal chaque dixième de seconde.

La classe se composent en majorité les définitions de mise en page écran qui servira dans la boucle principale. Bien que pas telle une vaste méthode comme dans le script de traqueur d’ISS, c’est toujours une partie substantielle du script. La méthode « setupUI » contient les déclarations pour les champs à afficher : type d’objet, position dans la fenêtre, la police, la relation à d’autres champs, etc.. Cette méthode est générée par Qt Designer. La méthode possède deux commandes. L’un pour appliquer les formats de champ ('retranslateUi') et l’autre à mettre en place la thread de traitement ('setupTrigger'). Ce dernier est ajouté au code généré. La méthode « setupTrigger » démarre le thread de traitement et définit la méthode à exécuter quand un signal est émis par le thread de traitement (i.e. "refreshWindow").

La méthode « refreshWindow » fractionne la chaîne « LinkingStorage », remplie par le thread de traitement et redéfinit les champs de la fenêtre Ajout de nouveau contenu. Un traitement mineur, comme l’obtention de l’heure actuelle, peut faire partie de la même méthode. Comme dit : principales de traitement, doit être exécuté dans le thread de traitement.

La boucle principale parle d’elle-même : construire une fenêtre et l’afficher sur l’écran.

À mon avis, il s’agit de la manière la plus simple pour ajouter des données dynamiques à une fenêtre.

L’écran de tracker ISS de construction

La source complète pour cette application se trouve à: Bitbucket

Bien que beaucoup plus grand en taille, manipuler la fenêtre et ses variables se fait dans la même manière :

  • Déclaration de la fenêtre dans la classe « Ui_mainwindow »
  • Déclaration de la thread de traitement dans la classe « déclencheur ». La minuterie pour émettre le signal sonore à la fenêtre-fil à 3 secondes. Ainsi que l’ensemble des temps de traitement de 2 secondes, cela se traduit par une actualisation de la fenêtre toutes les 5 secondes. Bien que je pense qu’il pourrait être attaché à une salopette 2 secondes, on devrait se rendre compte que les collecte pour les champs dynamiques de données se faites par des appels API. Si vous souhaitez utiliser le tracker pour un affichage constant, sachez que, à un taux de rafraîchissement de 2 secondes, le script va générer 43 200 appels en 24 heures. À mon avis c’est bien au-delà de « utilisation équitable » gratuite de l’API
  • Les données passées par l’intermédiaire de la chaîne « LinkedStorage »

La manipulation de données est divisée en collecte des données statiques (seulement se sont réunis une fois et montré constamment) et le rassemblement de données dynamiques (local et ISS).

L’utilisation de plusieurs API pour obtenir toutes les données, a été décrite dans un ancien instructable sur le Raspberry Pi SenseHat :

Instructable

Mots clés: Python, Pyqt, Filetage, ISS

Articles Liés

Facile de faire des rideaux pour votre fenêtre coulissante en verre

Facile de faire des rideaux pour votre fenêtre coulissante en verre

Je voulais quelques nouveaux rideaux pour ma fenêtre de verre coulissantes et après le shopping de trouver quelque chose élégant le moins cher je pouvais trouver allait m'a mis dos environ 55 $. Les rideaux sont en fait un des projets plus simples à
Silhouettes de fenêtre Spooky avec suivi-moi, les yeux

Silhouettes de fenêtre Spooky avec suivi-moi, les yeux

Halloween est presque là. Mais vous avez encore le temps de mettre sur pied des décorations vraiment effrayant. Un grand type de décoration est la silhouette de la fenêtre. Pour ce faire, tout ce que vous avez à mettre en place un découpage de monstr
Une fenêtre publique avec HTML5

Une fenêtre publique avec HTML5

avant de commencer à expliquer comment mettre en place votre propre fenêtre Public, nous voulons donner une courte introduction sur la façon dont ce projet a débuté et qui nous sommes.Fenêtre de publicLa fenêtre Public vise à promouvoir l'art interac
Grillage une vieille fenêtre

Grillage une vieille fenêtre

maison de conduire au travail un jour, ma soeur a remarqué une vieille fenêtre laissés de côté pour la poubelle. Étant de la même mère que moi, elle a intercepté et il saisit. Bien sûr, elle a attendu pour moi de venir le week-end à faire quelque cho
Journal avec fenêtre 3D

Journal avec fenêtre 3D

Faire un journal/journal intime avec une fenêtre transparente qui permet d'ajouter des objets 3D. La fenêtre a une porte dans le dos, vous pouvez ajouter/supprimer des objets et changer l'image comme bon vous semble ce qui en fait un journal très pol
Comment graver une fenêtre de l’ordinateur (partie 2)

Comment graver une fenêtre de l’ordinateur (partie 2)

cela va avec la façon de graver une fenêtre de l'ordinateur (partie 1) cette partie est facultative, mais je pense que c'est joli.Partie 2 prend cette gravure et ce qui en fait se démarquer. Cela rend la fenêtre regarder Tron comme d'une manière. Il
Sur la fenêtre Mini composteur avec Ventilation double

Sur la fenêtre Mini composteur avec Ventilation double

il s'agit d'une idée originale pour un bac à compost mini qui est spécifiquement pour les personnes qui vivent dans petits appartements ou maisons qui n'ont pas une arrière-cour.  Vous pourriez utiliser ce dispositif pour le développement de sol à me
Utiliser le fil dentaire fenêtre

Utiliser le fil dentaire fenêtre

IntroductionJe trouve cela ennuyeux une fois que j'ai commencé à sortir la soie uniquement pour atteindre la fin avant d'avoir assez pour faire le travail. Est-il loin d'éliminer ou de limiter ce problème ? La plupart des distributeurs de soie ont un
Autocollant de fenêtre de vinyle personnalisé

Autocollant de fenêtre de vinyle personnalisé

Je suis sûr que vous avez vu un bon nombre de ceux-ci. Il y a tous les types de vignettes affichées dans les fenêtres du véhicule. Si il affiche un groupe préféré, une entreprise locale, familles de bonhomme allumette ou votre déclaration politique p
Fenêtre de mémoire

Fenêtre de mémoire

Vous avez toutes les fenêtres tout autour de la pose que vous ne savez pas quoi faire avec?! ? Bien faire une fenêtre de mémoire ! Ils font un grand cadeau pour n'importe qui et c'est un excellent moyen pour décorer votre maison !Étape 1: Collecte de
Faire votre propre fenêtre PDMS pour Ember

Faire votre propre fenêtre PDMS pour Ember

Lorsque la fenêtre PDMS en plateau en résine de la braise est utilisée pendant une longue période, il tend à obtenir nuageux et endommagés. Au lieu d'obtenir un tout nouveau bac, il existe un moyen de faire une nouvelle fenêtre et remplacer celui end
Le réfrigérateur de la fenêtre, modernisé depuis la dernière dépression - un économiseur d’argent vert

Le réfrigérateur de la fenêtre, modernisé depuis la dernière dépression - un économiseur d’argent vert

débrancher l'élément le plus cher dans votre maison et économisez $$ de conserver la fraîcheur des aliments la manière démodée. J'ai demandé à mon père comment il a économisé de l'argent pendant la dépression. TOUR EST JOUÉ ! Le réfrigérateur de la f
Sugru fenêtre citrouilles

Sugru fenêtre citrouilles

Sugru mise sur une surface plane comme une fenêtre ou un écran d'ordinateur vous permet de créer un délicat, plat sculpture sans trop de mal de tête.Une fois que vous avez écrasé votre Sugru sur une surface propre et sèche comme du verre, vous pouvez
Panneau solaire, fenêtre suspendus

Panneau solaire, fenêtre suspendus

je voulais alimenter ma TV, modem câble, routeur et autres dispositifs de solaire. Je ne peux pas monter les panneaux sur le toit et je ne veux pas courir de longues distances de câble de l'arrière.Pourquoi ne pas accrocher le panneau par la fenêtre