In Fortsetzung von Vorheriger Artikel werde ich mit PyQt5 spielen.
Dieses Mal werde ich ein Unterfenster öffnen
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.
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.
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. .. ..
Bitte entschuldigen Sie, weil der Code schmutzig ist ...