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
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.
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.
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. .. ..
Veuillez m'excuser car le code est sale ...
Recommended Posts