J'ai joué avec PyQt5 et Python3

Qu'est-ce que Qt?

Qt (Cute) est un framework d'interface utilisateur d'application (UI) écrit en langage C ++.

Qt est largement connu comme une boîte à outils GUI, mais il est également largement utilisé dans les programmes non-GUI tels que les outils de console et les serveurs. De Wikipedia

Un framework qui facilite la création d'applications GUI. Il prend également en charge le développement multiplateforme.

Qu'est-ce que PyQt?

PyQt est une boîte à outils d'interface graphique multiplateforme, la liaison Python de Qt, et est l'une des options de programmation d'interface graphique en Python. De Wikipedia

Vous pouvez facilement créer des applications Qt et GUI définies pour Python.

Avantages de PyQt

Problèmes avec PyQt

Tout d'abord, préparez un environnement dans lequel vous pouvez utiliser PyQt5

procédure

  1. Installez Python
  2. Installez Qt (peut prendre du temps)
  3. Installez PyQt

Je n'expliquerai pas les paramètres d'environnement ici, donc ggrks

Écrivons réellement le code

Commençons par ouvrir la fenêtre

window.py


#!/usr/bin/env python3

import sys
from PyQt5.QtWidgets import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()

    main_window.show()
    sys.exit(app.exec_())

Quand je l'exécute, une fenêtre vide apparaît

Ajoutons un bouton et un titre

button.py


#!/usr/bin/env python3

import sys
from PyQt5.QtWidgets import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        button = QPushButton('button')

        layout = QGridLayout()
        layout.addWidget(button)
        self.setLayout(layout)
        self.setWindowTitle("Button")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()

    main_window.show()
    sys.exit(app.exec_())

Avec bouton et titre

Lisons et affichons la valeur du champ de texte

input-output.py


#!/usr/bin/env python3

import sys
from PyQt5.QtWidgets import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.button = QPushButton('Lire / afficher')
        self.button.clicked.connect(self.output)
        self.inputText = QLineEdit()
        self.inputText.setText("")

        self.outputText = QLineEdit()
        self.outputText.setText("")
        self.outputText.setReadOnly(True)

        textLayout = QHBoxLayout()
        textLayout.addWidget(self.inputText)
        textLayout.addWidget(self.outputText)

        layout = QVBoxLayout()
        layout.addLayout(textLayout)
        layout.addWidget(self.button)
        self.setLayout(layout)
        self.setWindowTitle("Button")

    def output(self):
        self.outputText.setText(self.inputText.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()

    main_window.show()
    sys.exit(app.exec_())

Lorsque vous entrez du texte et appuyez sur le bouton, le texte est sorti

Afficher la chaîne de caractères saisie dans QGraphicsView

string-graphic.py


#!/usr/bin/env python3

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *


class ShowString(QGraphicsItem):
    def __init__(self, width=200, height=10, text=""):
        super(ShowString, self).__init__()
        self.width = width
        self.height = height
        self.text = text

    def paint(self, painter, option, widget):
        painter.setPen(Qt.black)
        painter.drawText(0, 20, self.text)

    def boundingRect(self):
        return QRectF(0,0,400,100)

    def setText(self, text):
        self.text = text
        self.update()

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.graphicView = QGraphicsView()
        self.showString = ShowString()
        scene = QGraphicsScene(self.graphicView)
        scene.setSceneRect(0, 0, 400, 100)
        self.graphicView.setScene(scene)
        self.graphicView.resize(300,50)
        scene.addItem(self.showString)

        self.button = QPushButton('Lire / afficher')
        self.button.clicked.connect(self.output)
        self.inputText = QLineEdit()
        self.inputText.setText("")

        self.outputText = QLineEdit()
        self.outputText.setText("")
        self.outputText.setReadOnly(True)

        textLayout = QHBoxLayout()
        textLayout.addWidget(self.inputText)
        textLayout.addWidget(self.outputText)

        layout = QVBoxLayout()
        layout.addWidget(self.graphicView)
        layout.addLayout(textLayout)
        layout.addWidget(self.button)
        self.setLayout(layout)
        self.setWindowTitle("Button")

    def output(self):
        self.outputText.setText(self.inputText.text())
        self.showString.setText(self.inputText.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()

    main_window.show()
    sys.exit(app.exec_())

Ajout de la sortie de chaîne de caractères dans QGraphicsView au programme précédent

Je peux ajouter à nouveau un exemple de programme. .. ..

Suite: Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python

Impressions / Discussion

C'est tout pour jouer avec PyQt5 et Python3. Je l'aime parce que je peux concevoir des interfaces graphiques vraiment intuitivement.

référence

Je l'ai utilisé comme référence ci-dessous. Merci beaucoup. http://d.hatena.ne.jp/mFumi/20141112/1415806010 http://qiita.com/kenasman/items/55505654823e9d040e6e

Recommended Posts

J'ai joué avec PyQt5 et Python3
J'ai installé et utilisé Numba avec Python3.5
J'ai joué avec wordcloud!
J'ai créé une application graphique avec Python + PyQt5
[Python] J'ai joué avec le traitement du langage naturel ~ transformers ~
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé la synthèse de fonctions et le curry avec python
J'ai essayé fp-growth avec python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
J'ai fait un blackjack avec du python!
J'ai comparé Java et Python!
Compilation Python avec pyqt deploy
python avec pyenv et venv
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai fait un blackjack avec Python.
[GUI avec Python] PyQt5-Préparation-
J'ai créé wordcloud avec Python.
Fonctionne avec Python et R
[GUI avec Python] PyQt5 -Paint-
Je veux gérer l'optimisation avec python et cplex
J'ai essayé de mettre en œuvre le co-filtrage (recommandation) avec redis et python
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
[GUI avec Python] PyQt5 -Widget II-
pyenv-vertualenv n'installe pas correctement la série python3
Grattage avec Python, Selenium et Chromedriver
J'ai essayé webScraping avec python.
Grattage avec Python et belle soupe
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
J'ai fait une loterie avec Python.
J'ai envoyé un SMS avec Python
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
Lire et écrire NetCDF avec Python
J'ai aimé le tweet avec python. ..
J'ai joué avec Mecab (analyse morphologique)!
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
[GUI avec Python] PyQt5-Widget personnalisé-
Je veux déboguer avec Python
J'ai essayé d'exécuter prolog avec python 3.8.2.
Cette fois, j'ai appris python III et IV avec Prorate
Coexistence de Python2 et 3 avec CircleCI (1.0)
J'ai créé un démon avec Python
J'ai essayé la communication SMTP avec Python
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python