1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| #!/usr/bin/env python3
# coding: utf-8
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
class myAppli(QApplication):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.mainWid=widPrincipal()
# __init__()
def exec_(self):
self.mainWid.show()
return super().exec_()
# exec_()
# class myAppli
# La widget principale
class widPrincipal(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Une zone de texte
self.text=QLineEdit(parent=self)
self.text.setReadOnly(True)
# La w1 (qui va crééer une w2)...
self.w1=widget1(parent=self)
self.w1.w2.sigAction[str].connect(self.slotAction)
mainLayout=QVBoxLayout(self)
mainLayout.addWidget(self.text, stretch=0)
mainLayout.addWidget(self.w1, stretch=0)
mainLayout.addWidget(self.w1.w2, stretch=0)
# __init__()
@pyqtSlot(str)
def slotAction(self, s):
self.text.setText("".join(reversed(s)))
# class widPrincipal
# La sous-widget 1 (qui crée la w2)
class widget1(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.w2=widget2(parent=self)
# Une zone de texte
text=QLineEdit("sous-widget1", parent=self)
text.setReadOnly(True)
mainLayout=QVBoxLayout(self)
mainLayout.addWidget(text, stretch=0)
# __init__()
# class widget1
# La sous-widget 2 (qui fait saisir un texte et qui l'envoie par un signal)
class widget2(QWidget):
sigAction=pyqtSignal(str)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Une zone de texte
self.text=QLineEdit(parent=self, textEdited=self.slotText)
layout1=QHBoxLayout()
layout1.addWidget(QLabel("Entrez un texte ici :", parent=self), stretch=0)
layout1.addWidget(self.text, stretch=1)
mainLayout=QVBoxLayout(self)
mainLayout.addLayout(layout1, stretch=0)
# __init__()
def slotText(self, s):
self.sigAction[str].emit(s)
# class widget2
if __name__ == "__main__":
sys.exit(myAppli(sys.argv).exec_()) |
Partager