Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen

In Fortsetzung von Vorheriger Artikel werde ich mit PyQt5 spielen.

Dieses Mal werde ich ein Unterfenster öffnen

Geben Sie zunächst das Unterfenster normal aus

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)
        #Eine Schaltfläche erstellen
        makeWindowButton = QPushButton("&make window")
        #Klicken Sie auf Ereignis(makeWindow())Hinzufügen
        makeWindowButton.clicked.connect(self.makeWindow)
        #Layout erstellen
        layout = QHBoxLayout()
        #Hinzufügen von Schaltflächen zum Layout
        layout.addWidget(makeWindowButton)
        #Layout zum Fenster hinzufügen
        self.setLayout(layout)

    def makeWindow(self):
        #Unterfenster erstellen
        subWindow = SubWindow()
        #Unterfenster anzeigen
        subWindow.show()

class SubWindow(QWidget):
    def __init__(self, parent=None):
        #Ist das die Substanz des Unterfensters? Ziel. Dialog
        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_())

Sie können ein Unterfenster erstellen, indem Sie die Unterfensterklasse im übergeordneten Fenster instanziieren und show () ausführen.

self.w = QDialog(parent) Hier und da ist es wichtig.

Ohne dies in der Unterfensterklasse self.setLayout(layout) Es ist nicht gut, weil es einen Fehler verursacht.

Ausgabe eines Unterfensters, das Werte mit der aufrufenden Klasse übergibt

Es gibt wahrscheinlich Situationen, in denen Sie ein Unterfenster ausgeben und Parameter eingeben möchten. Ich werde es versuchen.

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()

    #Vom Unterfenster aus ausführen
    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('Senden')
        button.clicked.connect(self.setParamOriginal)

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

        self.w.setLayout(layout)

    #Ich übergebe hier einen Wert an das übergeordnete Fenster
    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_())

Ich füge Werte aus dem Unterfenster in die Beschriftung des übergeordneten Fensters ein. Es ist zum ersten Mal seit 4 Tagen in Python und ich habe nicht viel über die Python-Sprache gelernt, also war ich ein wenig festgefahren, weil ich nicht wusste, wie ich mit mir selbst umgehen soll. Es tut mir leid, dass der Code schmutzig ist.

Impressionen / Diskussion

PyQt Es ist wirklich erstaunlich, erstaunlich ... Ich fand es sehr praktisch. Ich versuche, die Referenz zu lesen, aber ich kann sie nicht lesen, weil ich nicht gut Englisch kann und noch nicht an Python gewöhnt bin. Ich muss ein bisschen mehr Python werden. .. ..

Schließlich

Bitte entschuldigen Sie, weil der Code schmutzig ist ...

Recommended Posts

Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Versuchen Sie es mit GUI, PyQt in Python
Versuchen Sie, Facebook mit Python zu betreiben
Ich habe mit PyQt5 und Python3 gespielt
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
Versuchen Sie, Ihrer IFC-Datei mit IfcOpenShell Python eine Wand hinzuzufügen
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
Was tun, wenn ipython und python mit unterschiedlichen Versionen starten?
Versuchen Sie, Breiten- / Längen- und Weltkoordinaten mit Python ineinander umzuwandeln
Versuchen Sie, mit Python (2) eine Erfassungssoftware zu erstellen, die so genau wie möglich ist.
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Versuchen Sie ernsthaft, eine Vim-Testumgebung einzurichten (für Python).
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
Lesen einer CSV-Datei mit Python 2/3
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Berechnen wir das statistische Problem mit Python
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Erstellen einer Python-Umgebung mit virtualenv und direnv
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Ich möchte ein Spiel mit Python machen
Versuche mit EV3 und PC zu kommunizieren! (MQTT)
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Schritte zum Erstellen eines Twitter-Bots mit Python
Starten Sie einen Webserver mit Python und Flask
Ich möchte mit Python in eine Datei schreiben
Zubu Amateur will Python starten
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Versuchen Sie, mit Talking Head Anime aus einem einzigen Bild zu verschönern [Python-Vorbereitung]
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Versuchen Sie es mit Python.
Versuchen Sie, eine einfache Website mit Responder und sqlite3 zu erstellen
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen