IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Sélection d'une région et d'une fenêtre


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut Sélection d'une région et d'une fenêtre
    Bonsoir,

    je suis en train de convertir un logiciel bash en python3 avec qt4.

    Je cherche les conversions suivantes :
    - Sélection d'une fenêtre : xwininfo
    => Permet de récupérer la taille de la fenêtre et l'emplacement de celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    xwininfo: Window id: 0x6c0001a "hizoka : xwininfo – Konsole"
      Absolute upper-left X:  0
      Absolute upper-left Y:  23
      Relative upper-left X:  0
      Relative upper-left Y:  0
      Width: 847
      Height: 660
      Depth: 32
      Visual: 0x6c
      Visual Class: TrueColor
      Border width: 0
      Class: InputOutput
      Colormap: 0x6c00001 (not installed)
      Bit Gravity State: NorthWestGravity
      Window Gravity State: NorthWestGravity
      Backing Store State: NotUseful
      Save Under State: no
      Map State: IsViewable
      Override Redirect State: no
      Corners:  +0+23  -2033+23  -2033-592  +0-592
      -geometry 847x660+-2+0
    - Selection d'une portion rectangulaire de l'écran (via imagemagick) : import -identify /dev/null
    Cela permet de faire une selection à main lever sur l'ecran avec un petit effet visuel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /dev/null PS 617x523 2880x1275+252+304 16-bit DirectClass 0.010u 0:00.000
    J'aimerai une solution ne necessitant pas de compiler quoi que ce soit afin que ce soit le plus simple possible.

    Y a-t-il une solution utilisant Qt ? ou simplement python3 ?

    J'ai vu Wand qui utilise imagemagick mais je n'ai pas réussis à trouver l'equivalent.

    Merci à vous !
    Sous Kubuntu 20.04

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    je me permets un petit up.


    Juste pour info, pour la sélection de portion, j'affiche une fenêtre transparente avec un bouton central pour valider...
    ce n'est pas tip top mais au moins ça fonctionne...
    Sous Kubuntu 20.04

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut Hizoka,

    Il y a deux choses différentes là, un screenshot d'une fenêtre spécifique ou celui d'une région donnée par un rectangle de sélection.

    Pour la première fonctionnalité, si la fenêtre est un QWidget ou dérivé, tu peux utiliser grabWidget(widget), sinon en détectant le changement de focus peut-être ...

    Pour la deuxième fonctionnalité, teste ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    # -*- coding: utf-8 -*-
     
    import sys
    import subprocess
    from PyQt4 import QtGui, QtCore
     
    def grab_screen():
        return QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId())
     
    def get_area_geometry():
        rep = subprocess.Popen(["import", "-identify", "/dev/null"],
                                universal_newlines=True,
                                stdout=subprocess.PIPE).communicate()
     
        try:
            items = rep[0].split()
            w, h = items[2].split('x')
            x, y = items[3].split('+')[-2:]
        except Exception as why:
            print('Suprocess return: %s' % str(rep))
            print(why)
            sys.exit()
     
        return [int(i) for i in (x, y, w, h)]
     
    def shoot_area():
        left, up, width, height = get_area_geometry()
        screen = grab_screen()
        img = screen.copy(QtCore.QRect(left, up, width, height))
        img.save('myScreenshot.png')
     
    if __name__ == '__main__':
        app = QtGui.QApplication([])
        shoot_area()
    Je l'ai testé avec python 2, pour cause de machine disponible.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Pour la première fonctionnalité, si la fenêtre est un QWidget ou dérivé, tu peux utiliser grabWidget(widget), sinon en détectant le changement de focus peut-être ...
    Oula, j'ai oublié de préciser que ce sont des fenêtres sur lequel je ne sais rien puisque le principe c'est de pouvoir choisir n'importe quelle fenêtre ouverte sur le bureau (n'importe quel logiciel).

    et pour l'autre demande, c'est déjà ce que je fais mais je voulais savoir s'il y avait autre chose que subprocess ou qprocess, un truc un peu plus natif python

    Mais merci de tes propositions.
    Sous Kubuntu 20.04

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Salut Hizoka,

    Je vois avec grand plaisir que tu es en train de passer Screencastor en Python 3 et Qt.

    Je sens que Laurent va etre très content lui aussi et à mon avis sera ravi de refaire un article pour Linux Pratique 3 ans après celui qu'il a fait en 2012 à condition qu'ils soient d'accord pour qu'il en fasse un autre.

    Juste une remarque que j'ai vu sur ce thread : http://www.developpez.net/forums/d14...dialog-widget/.
    Ne te limite pas à avconv le fork de ffmpeg seulement disponible pour Debian/Ubuntu. De plus, ffmpeg revient dans les depots de Debian aux cotés de ce fork.

    Bonne continuation. @+

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut

    Il est quasiment fini.

    Je propose avconv comme ffmpeg

    il me reste en gros les traductions et ça me gonfle mais bon...

    j'ai fait quelques modifs par rapport à l'ancienne version mais pas de grands changement non plus.

    Enfin, c'est bien plus fluide.
    Sous Kubuntu 20.04

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Il est quasiment fini.
    Une très bonne nouvelle.

    e propose avconv comme ffmpeg
    Encore une très bonne nouvelle

Discussions similaires

  1. Lien dans un frame d'une cadre pour ouvrir une autre page sur une même fenêtre
    Par maelislah dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 27/06/2015, 20h39
  2. Réponses: 27
    Dernier message: 03/01/2008, 11h07
  3. Réponses: 8
    Dernier message: 10/10/2007, 16h51
  4. Copier une table Access d'une base de données à une autre
    Par Marie S. dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/05/2007, 12h09
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo