[GUI avec Python] PyQt5 -Paint-

Suite de Dernière fois

Painting Je vais résumer grossièrement ce site en japonais.

[Peinture de personnage]

Drawing_text.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtCore import Qt


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430'

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Draw text')
        self.show()
        

    #Gestionnaire d'événements pour le dessin
    def paintEvent(self, event):

        qp = QPainter()
        #Ecrire une méthode de peinture entre les méthodes de début et de fin
        qp.begin(self)
        self.drawText(event, qp)
        qp.end()
        
        
    def drawText(self, event, qp):
      
        #Spécification de la couleur du texte
        qp.setPen(QColor(168, 34, 3))
        #Spécifiez la police et la taille de la police
        qp.setFont(QFont('Decorative', 10))
        #Le premier argument est l'écran principal qui doit être mis à jour
        #Le deuxième argument déplace le caractère au milieu
        #Le troisième argument est le texte à insérer
        qp.drawText(event.rect(), Qt.AlignCenter, self.text)
                
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
draw_text.png

[Dessinez un point]

Drawing_points.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys, random
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Points')
        self.show()
        

    def paintEvent(self, e):

        qp = QPainter()
        qp.begin(self)
        self.drawPoints(qp)
        qp.end()
        
        
    def drawPoints(self, qp):
      
        #Préparez un stylo rouge
        qp.setPen(Qt.red)
        #Définir la taille de la fenêtre (paintEvent se produit lorsque la taille change)
        size = self.size()
        
        #Tirez au hasard 1000 points
        for i in range(1000):
            x = random.randint(1, size.width()-1)
            y = random.randint(1, size.height()-1)
            qp.drawPoint(x, y)     
                
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
points.png

[Comment spécifier la couleur]

Colours.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.setGeometry(300, 300, 350, 100)
        self.setWindowTitle('Colours')
        self.show()


    def paintEvent(self, e):

        qp = QPainter()
        qp.begin(self)
        self.drawRectangles(qp)
        qp.end()

        
    def drawRectangles(self, qp):
      
        #Spécifiez la couleur de la ligne autour du rectangle (RVB)
        col = QColor(0, 0, 0)
        #Spécifiez la couleur de la ligne autour du rectangle (hexa)
        col.setNamedColor('#d4d4d4')
        #Définir la couleur du stylo
        qp.setPen(col)

        # Qcolor(Red, Green, Blue, Alpha)Alpha est transparent
        qp.setBrush(QColor(200, 0, 0))
        # drawRect(x, y, width, height)
        qp.drawRect(10, 15, 90, 60)

        qp.setBrush(QColor(255, 80, 0, 160))
        qp.drawRect(130, 15, 90, 60)

        qp.setBrush(QColor(25, 0, 90, 200))
        qp.drawRect(250, 15, 90, 60)
              
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
colours.png

[Style de stylo]

QPen.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.setGeometry(300, 300, 280, 270)
        self.setWindowTitle('Pen styles')
        self.show()
        

    def paintEvent(self, e):

        qp = QPainter()
        qp.begin(self)
        self.drawLines(qp)
        qp.end()
        
        
    def drawLines(self, qp):
        
        #Définissez la couleur du stylet sur noir, la largeur sur 2 pixels et le style sur SolidLine.
        pen = QPen(Qt.black, 2, Qt.SolidLine)

        #Définir le style de stylo spécifié ci-dessus
        qp.setPen(pen)
        #dessin
        qp.drawLine(20, 40, 250, 40)

        #Changer de style en ligne de tiret
        pen.setStyle(Qt.DashLine)
        qp.setPen(pen)
        qp.drawLine(20, 80, 250, 80)

        pen.setStyle(Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)

        pen.setStyle(Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)

        pen.setStyle(Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)

        #Définissez votre propre style
        pen.setStyle(Qt.CustomDashLine)
        # setDashPattern([Ligne 1px,Espace 4px,Ligne 5px,Espace 4px])
        pen.setDashPattern([1, 4, 5, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)
              
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
pen_style.png

【remplir】

QBrush.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QBrush
from PyQt5.QtCore import Qt


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.setGeometry(300, 300, 355, 280)
        self.setWindowTitle('Brushes')
        self.show()
        

    def paintEvent(self, e):

        qp = QPainter()
        qp.begin(self)
        self.drawBrushes(qp)
        qp.end()
        
        
    def drawBrushes(self, qp):
      
        #Spécifier le style de motif solide
        brush = QBrush(Qt.SolidPattern)
        #Désigné comme un pinceau
        qp.setBrush(brush)
        #Faites un rectangle et remplissez-le
        qp.drawRect(10, 15, 90, 60)

        brush.setStyle(Qt.Dense1Pattern)
        qp.setBrush(brush)
        qp.drawRect(130, 15, 90, 60)

        brush.setStyle(Qt.Dense2Pattern)
        qp.setBrush(brush)
        qp.drawRect(250, 15, 90, 60)

        brush.setStyle(Qt.Dense3Pattern)
        qp.setBrush(brush)
        qp.drawRect(10, 105, 90, 60)

        brush.setStyle(Qt.DiagCrossPattern)
        qp.setBrush(brush)
        qp.drawRect(10, 105, 90, 60)

        brush.setStyle(Qt.Dense5Pattern)
        qp.setBrush(brush)
        qp.drawRect(130, 105, 90, 60)

        brush.setStyle(Qt.Dense6Pattern)
        qp.setBrush(brush)
        qp.drawRect(250, 105, 90, 60)

        brush.setStyle(Qt.HorPattern)
        qp.setBrush(brush)
        qp.drawRect(10, 195, 90, 60)

        brush.setStyle(Qt.VerPattern)
        qp.setBrush(brush)
        qp.drawRect(130, 195, 90, 60)

        brush.setStyle(Qt.BDiagPattern)
        qp.setBrush(brush)
        qp.drawRect(250, 195, 90, 60)
              
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
brushes.png

La prochaine fois essaiera à peu près Widgets personnalisés.

Recommended Posts

[GUI avec Python] PyQt5 -Paint-
[GUI avec Python] PyQt5-Préparation-
[GUI avec Python] PyQt5 -Widget II-
[GUI avec Python] PyQt5-Widget personnalisé-
J'ai créé une application graphique avec Python + PyQt5
Compilation Python avec pyqt deploy
[GUI en Python] PyQt5-Layout management-
[GUI en Python] PyQt5 -Event-
Faisons une interface graphique avec python.
[GUI avec Python] PyQt5-La première étape-
FizzBuzz en Python3
Grattage avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Construction d'interface graphique heureuse avec électron et python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Outil de rognage d'image GUI réalisé avec Python + Tkinter
Automatisation de l'interface graphique avec le pilote d'application Python x Windows
Vous pouvez facilement créer une interface graphique même avec Python
Création d'un outil de vente simple avec Python GUI: création de devis
Ouvrir la boîte de dialogue de fichier avec l'interface graphique Python (tkinter.filedialog)
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Grattage avec Python + PhantomJS
Conduisez WebDriver avec python
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python