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 :

PyQt6 & High DPI


Sujet :

PyQt Python

  1. #1
    Invité
    Invité(e)
    Par défaut PyQt6 & High DPI
    Bonjour,

    Je viens de passer de Windows 11 à Windows 10, de Python 3.9 à python 3.10 et de PyQt5 à PyQt6.

    Mon ordi à une résolution de 1920*1080 et j'utilise un facteur de 125% de mise à échelle (High DPI).
    Avec PyQt6 j'aurais souhaité afficher les "choses" à la bonne taille, sauf que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    screen = app.primaryScreen()
    size = screen.size()
    print('Size: %d x %d' % (size.width(), size.height()))
    rect = screen.availableGeometry()
    print('Available: %d x %d' % (rect.width(), rect.height()))
    Donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Size: 1536 x 864
    Available: 1536 x 824
    1536*1.25 = 1920 et 864*1.25 = 1080
    Tout le contenu de la QApplication est agrandi, police, image, ... proportionnellement par ce facteur 1.25.

    Comment dois-je m'y prendre pour résoudre ça, sans toucher aux cotes de mes QLabel ?
    J'ai été jeté un oeil ici : https://doc.qt.io/qt-6/highdpi.html
    Sans trop comprendre ce que je devais faire.

    J'ai coché la case :
    Nom : Sans titre.png
Affichages : 499
Taille : 54,0 Ko
    Sans plus de changement...

    Merci !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par LeNarvalo Voir le message
    Je viens de passer de Windows 11 à Windows 10
    Joli. Moi j'aurais tenté le contraire mais... (non, en réalité je ne veux pas de cet OS qui "impose" l'activation de ma puce TPM pour s'installer !!! mais ceci est un autre débat)

    Citation Envoyé par LeNarvalo Voir le message
    Mon ordi à une résolution de 1920*1080 et j'utilise un facteur de 125% de mise à échelle (High DPI).
    Avec PyQt6 j'aurais souhaité afficher les "choses" à la bonne taille, sauf que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    screen = app.primaryScreen()
    size = screen.size()
    print('Size: %d x %d' % (size.width(), size.height()))
    rect = screen.availableGeometry()
    print('Available: %d x %d' % (rect.width(), rect.height()))
    Donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Size: 1536 x 864
    Available: 1536 x 824
    1536*1.25 = 1920 et 864*1.25 = 1080
    Tout le contenu de la QApplication est agrandi, police, image, ... proportionnellement par ce facteur 1.25.
    Oui, ça me parait logique. Si tu agrandis tout ce que tu affiches de 1.25%, il est alors normal que Qt soit agrandi avec. De même il est tout aussi naturel qu'un rectangle Qt, pour être le plus grand possible tout en pouvant quand-même tenir dans l'écran, soit alors diminué de 1.25%. C'est pour ça que ton avail=(1920/1.25) x (1080/1.25)

    Citation Envoyé par LeNarvalo Voir le message
    Comment dois-je m'y prendre pour résoudre ça, sans toucher aux cotes de mes QLabel ?
    Le souci c'est que je ne comprends pas ce que tu veux "résoudre"... Tu veux quoi? Que ton QAppli soit affiché comme s'il n'y avait pas ce zoom de 1.25%???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Joli. Moi j'aurais tenté le contraire mais...
    J'accumulais les petits problèmes et désagréments sur Windows 11...

    Tu veux quoi? Que ton QAppli soit affiché comme si'il n'y avait pas ce zoom de 1.25%???
    Oui comme avec PyQt5 quand j'étais sur Windows 11.
    Je ne sais pas si je dois me tourner sur une solution Windows (un paramètre à changer, une variable d'environnement à saisir, ...) ou s'il y a un truc sur PyQt6 pour résoudre ça...

    Avant d'aller plus loin, voici un bout de code :
    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
    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
    class Window(QMainWindow):
        def __init__(self, hour, day, wallpaper):
            super().__init__()
     
            #self.acceptDrops()
            # set the title
            self.setWindowTitle(win_title)
     
            # this will hide the title bar
            self.setWindowFlag(Qt.WindowType.FramelessWindowHint)
     
            # setting  the geometry of window
            self.setGeometry(0, 0, 1920, 1080)
     
            # creating label
            self.label = QLabel(self)
     
            # loading image
            #self.pixmap = QPixmap(path)
            self.pixmap = QPixmap.fromImage(wallpaper)
     
            # adding image to label
            self.label.setPixmap(self.pixmap)
     
            # Optional, resize label to image size
            self.label.resize(self.pixmap.width(),
                              self.pixmap.height())
     
     
            # creating label1
            self.label1 = QLabel(self)
            self.label1.resize(1920, 1080)
            self.label1.setText(hour)
            self.label1.setFont(QFont('French Script MT', 200))
            self.label1.move(0, -150)
            self.label1.setAlignment(Qt.AlignmentFlag.AlignCenter)
            self.label1.setStyleSheet("color : black; font-weight: bold")
     
    #QT_SCALE_FACTOR = 1.25
    # create pyqt5 app
    app = QApplication.instance() 
    if not app:
        app = QApplication(sys.argv)
     
     
    #getWallpaper()
     
    date = time.strftime('%A, %d %B, %Y %H:%M:%S').capitalize()
    date = date.split(' ')
    hour = date[-1]
    day = ' '.join((date[0:-1]))
     
    #win = Window(hour, day, wallpaper)
    #win.import_meteo()
     
    win.show()
    #win.hide()
     
    QTimer.singleShot(200, boucle)
     
    screen = app.primaryScreen()
    size = screen.size()
    print('Size: %d x %d' % (size.width(), size.height()))
    rect = screen.availableGeometry()
    print('Available: %d x %d' % (rect.width(), rect.height()))
     
    app.exec()
    Bon c'est encore pire maintenant :
    Size: 1229 x 691
    Available: 1229 x 659
    Dernière modification par Invité ; 29/08/2022 à 16h19.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Après quelques essais supplémentaires et reconnexions de session Windows (à quoi sert le bouton "Appliquer" dans ce cas ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Size: 2048 x 1152
    Available: 2048 x 1152
    Le résultat semble être identique à ce que j'avais auparavant ! On va dire que c'est OK !
    J'ai donc appliqué le cochage d'options qui suit sur pythonw_d.exe, pythonw.exe, python_d.exe et python.exe :
    Nom : Sans titre.png
Affichages : 477
Taille : 56,2 Ko

Discussions similaires

  1. Une alternative à XCloseDisplay(Display *dpy) ?
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 10/02/2005, 09h32

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