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

Dans la continuité de l'article précédent (http://qiita.com/hnkz/items/a8311aeba1682debebf7), je continuerai à jouer avec PyQt5.

Cette fois, je vais ouvrir une sous-fenêtre

Tout d'abord, affichez la sous-fenêtre normalement

test.py


#!/usr/bin/env python3

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


class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        #Créer un bouton
        makeWindowButton = QPushButton("&make window")
        #Cliquez sur l'événement(makeWindow())Ajouter
        makeWindowButton.clicked.connect(self.makeWindow)
        #Créer une mise en page
        layout = QHBoxLayout()
        #Ajout de boutons à la mise en page
        layout.addWidget(makeWindowButton)
        #Ajouter une mise en page à la fenêtre
        self.setLayout(layout)

    def makeWindow(self):
        #Créer une sous-fenêtre
        subWindow = SubWindow()
        #Afficher la sous-fenêtre
        subWindow.show()

class SubWindow(QWidget):
    def __init__(self, parent=None):
        #Est-ce la substance de la sous-fenêtre? Cible. dialogue
        self.w = QDialog(parent)
        label = QLabel()
        label.setText('Sub Window')
        layout = QHBoxLayout()
        layout.addWidget(label)
        self.w.setLayout(layout)

    def show(self):
        self.w.exec_()

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

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

Vous pouvez créer une sous-fenêtre en instanciant la classe de sous-fenêtre dans la fenêtre parente et en faisant show ().

self.w = QDialog(parent) Ici et là, c'est important.

Sans faire cela, dans la classe subwindow self.setLayout(layout) Ce n'est pas bon car cela provoque une erreur.

Sortie d'une sous-fenêtre qui transmet des valeurs avec la classe appelante

Il existe probablement des situations où vous souhaitez afficher une sous-fenêtre et entrer des paramètres. J'essaierai.

test.py


#!/usr/bin/env python3

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


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

        makeWindowButton = QPushButton("&make window")
        makeWindowButton.clicked.connect(self.makeWindow)

        self.label = QLabel()
        self.label.setText("default:")

        layout = QHBoxLayout()
        layout.addWidget(makeWindowButton)
        layout.addWidget(self.label)
        self.setLayout(layout)

    def makeWindow(self):
        subWindow = SubWindow(self)
        subWindow.show()

    #Exécuter à partir de la sous-fenêtre
    def setParam(self, param):
        self.label.setText(param)

class SubWindow:
    def __init__(self, parent=None):
        self.w = QDialog(parent)
        self.parent = parent

        label = QLabel()
        label.setText('Sub Window')

        self.edit = QLineEdit()

        button = QPushButton('Envoyer')
        button.clicked.connect(self.setParamOriginal)

        layout = QVBoxLayout()
        layout.addWidget(label)
        layout.addWidget(self.edit)
        layout.addWidget(button)

        self.w.setLayout(layout)

    #Je passe une valeur à la fenêtre parent ici
    def setParamOriginal(self):
        self.parent.setParam(self.edit.text())

    def show(self):
        self.w.exec_()

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

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

Je mets des valeurs de la sous-fenêtre à l'étiquette de la fenêtre parent. Cela fait 4 jours pour la première fois en Python et je n'ai pas beaucoup étudié le langage Python, donc j'étais un peu coincé parce que je ne savais pas comment me gérer. Je suis désolé que le code soit sale.

Impressions / Discussion

PyQt C'est vraiment incroyable, incroyable ... J'ai trouvé que c'était très pratique. J'essaie de lire la référence, mais je ne peux pas la lire car je ne suis pas bon en anglais et je ne suis pas encore habitué à Python. Je dois devenir un peu plus Python. .. ..

finalement

Veuillez m'excuser car le code est sale ...

Recommended Posts

Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Essayez de dessiner une courbe de vie avec python
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Faisons un outil de veille de commande avec python
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Essayez de le faire avec GUI, PyQt en Python
Essayez d'exploiter Facebook avec Python
J'ai joué avec PyQt5 et Python3
Essayez simplement de recevoir un webhook avec ngrok et Python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Essayez d'extraire une chaîne de caractères d'une image avec Python3
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Essayez d'afficher la carte google et la carte géographique avec python
Essayez d'ajouter un mur à votre fichier IFC avec IfcOpenShell python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Essayez le scraping HTML avec la bibliothèque Python
Essayez de dessiner une carte avec python + cartopy 0.18.0
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Que faire si ipython et python démarrent avec des versions différentes
Essayez de convertir les coordonnées de latitude / longitude et du monde entre elles avec python
Essayez de créer un logiciel de capture aussi précis que possible avec python (2)
Envoyez du courrier avec mailx à un serveur SMTP factice configuré avec python.
Essayez de mettre en place un environnement de test Vim assez sérieusement (pour Python)
Essayez de résoudre un problème défini de mathématiques au lycée avec Python
Comment lire un fichier CSV avec Python 2/3
Envoyer un message à LINE avec Python (LINE Notify)
MessagePack-Try pour lier Java et Python avec RPC
Calculons en fait le problème statistique avec Python
J'ai créé une application graphique avec Python + PyQt5
Construire un environnement python avec virtualenv et direnv
Essayez d'exécuter Google Chrome avec Python et Selenium
Essayez de résoudre le diagramme homme-machine avec Python
Je veux faire un jeu avec Python
Essayez de communiquer avec EV3 et PC! (MQTT)
Essayez de générer automatiquement des documents Python avec Sphinx
Décidez d'une mission de laboratoire avec Python (fiction)
Étapes pour créer un bot Twitter avec Python
Lancer un serveur Web avec Python et Flask
Je veux écrire dans un fichier avec Python
Zubu amateur veut démarrer Python
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Essayez d'embellir avec Talking Head Anime à partir d'une seule image [préparation python]
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Essayez de gratter avec Python.
Essayez de créer un site Web simple avec responder et sqlite3
Comment convertir / restaurer une chaîne avec [] en python
Procédure pour charger MNIST avec python et sortie en png
Essayez de résoudre le livre des défis de programmation avec python3