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 :

QtDesigner et résolution d'écran


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut QtDesigner et résolution d'écran
    Bonjour,

    j'ai realise une interface graphique a l'aide de QTDesigner et je souhaite pouvoir l'utiliser sur un autre ordinateur sans changer la forme de l'application.

    Savez-vous ce qui est possible de faire?

    Merci par avance pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Citation Envoyé par laoren Voir le message
    Savez-vous ce qui est possible de faire?
    • installer l'application et ses dépendances sur l'autre machine,
    • utiliser un remote-display,
    • ...

    C'est plus de l'administration système (quels sont les outils qui... sur votre OS) que de la programmation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    J'ai du mal m'exprmier alors.
    Je ne parlais pas de l'application en elle meme mais de l'interface graphique que j'ai cree.
    En effet, lorsque je veux l'utiliser sur un autre ordinateur, la taille des widgets et leur placement change.
    J'aurais donc aime savoir s'il y avait un moyen de modifier cela.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Citation Envoyé par laoren Voir le message
    J'ai du mal m'exprmier alors.
    Je ne parlais pas de l'application en elle meme mais de l'interface graphique que j'ai cree.
    En effet, lorsque je veux l'utiliser sur un autre ordinateur, la taille des widgets et leur placement change.
    J'aurais donc aime savoir s'il y avait un moyen de modifier cela.
    La question serait plutôt de savoir comment faire pour que ce qui est produit par QtDesigner s'adapte à la résolution de l'écran.
    La réponse courte pourrait être de fabriquer un UI pour chaque résolution et on charge conditionnellement le moins mauvais. Peut être que d'autres auront des idées plus élaborées sinon posez la question dans le forum Qt/C++: ils ont le même problème.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    Peut-être n'as-tu pas utilisé de QLayout, ça peut expliquer ce comportement.

    Avec les QLayout Qt maintient une mise en page correcte à n'importe quelle résolution.

    Toutefois si tu conçois sur un grand écran une appli qui devra tourner sur une tablette ce sera à toi d'en tenir compte lors de son concept.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci pour vos reponses.

    J'ai bien utilise un Layout mais cela ne suffit pas. Je cherche effectivement a adapter la fenetre de mon interface graphique en fonction de la resolution de l ecran que l on utilise.

    Si vous avez une idee n'hesitez pas

  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Montre le code de ta mainWindow, je suis sur que tu utilises mal tes QLayout.

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    On peut connaître la définition de l'écran avec la méthode screenGeometry de QDesktopWidget.

    Connaissant la taille en pixel de la fenêtre, on devrait donc pouvoir calculer le ratio à utiliser pour que la fenêtre prenne la même place dans l'écran, quelque soit sa définition.

    Et grâce aux layouts, le contenu de la fenêtre suivra correctement les variations de dimensions de la fenêtre.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Montre le code de ta mainWindow, je suis sur que tu utilises mal tes QLayout.
    J'ai uniquement utilise QTDesigner pour le layout, donc ceci est le code genere par le logiciel (je ne l'ai pas modifie).
    Voici donc une partie du 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
    class Ui_Dialog(object):
        def setupUi(self, Dialog):
            Dialog.setObjectName(_fromUtf8("Dialog"))
            Dialog.resize(323, 309)
            self.gridLayout = QtGui.QGridLayout(Dialog)
            self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
            self.div_lcdNumber_3 = QtGui.QLCDNumber(Dialog)
            self.div_lcdNumber_3.setObjectName(_fromUtf8("div_lcdNumber_3"))
            self.gridLayout.addWidget(self.div_lcdNumber_3, 3, 2, 1, 1)
            self.div_pushButton_2 = QtGui.QPushButton(Dialog)
            self.div_pushButton_2.setObjectName(_fromUtf8("div_pushButton_2"))
            self.gridLayout.addWidget(self.div_pushButton_2, 2, 2, 1, 1)
            self.multiply_lcdNumber_2 = QtGui.QLCDNumber(Dialog)
            self.multiply_lcdNumber_2.setObjectName(_fromUtf8("multiply_lcdNumber_2"))
            self.gridLayout.addWidget(self.multiply_lcdNumber_2, 3, 1, 1, 1)
            self.lineEdit = QtGui.QLineEdit(Dialog)
            self.lineEdit.setMaximumSize(QtCore.QSize(50, 16777215))
            self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
            self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 1)
            self.multiply_pushButton = QtGui.QPushButton(Dialog)
            self.multiply_pushButton.setObjectName(_fromUtf8("multiply_pushButton"))
            self.gridLayout.addWidget(self.multiply_pushButton, 2, 1, 1, 1)
            self.pushButton_clear = QtGui.QPushButton(Dialog)
            self.pushButton_clear.setObjectName(_fromUtf8("pushButton_clear"))
            self.gridLayout.addWidget(self.pushButton_clear, 2, 0, 1, 1)
            self.clear_pushButton = QtGui.QPushButton(Dialog)
            self.clear_pushButton.setObjectName(_fromUtf8("clear_pushButton"))
            self.gridLayout.addWidget(self.clear_pushButton, 1, 2, 1, 1)
            self.print_lcdNumber = QtGui.QLCDNumber(Dialog)
            self.print_lcdNumber.setMaximumSize(QtCore.QSize(16777215, 31))
            self.print_lcdNumber.setObjectName(_fromUtf8("print_lcdNumber"))
            self.gridLayout.addWidget(self.print_lcdNumber, 3, 0, 1, 1)
            self.pushButton_picture = QtGui.QPushButton(Dialog)
            self.pushButton_picture.setObjectName(_fromUtf8("pushButton_picture"))
            self.gridLayout.addWidget(self.pushButton_picture, 0, 2, 1, 1)
     
     
            self.retranslateUi(Dialog)
            QtCore.QObject.connect(self.clear_pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.lineEdit.clear)
            QtCore.QMetaObject.connectSlotsByName(Dialog)

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    On peut connaître la définition de l'écran avec la méthode screenGeometry de QDesktopWidget.

    Connaissant la taille en pixel de la fenêtre, on devrait donc pouvoir calculer le ratio à utiliser pour que la fenêtre prenne la même place dans l'écran, quelque soit sa définition.

    Et grâce aux layouts, le contenu de la fenêtre suivra correctement les variations de dimensions de la fenêtre.
    Merci ppur la reponse, je pense que c'est ce que je cherchais, je vais m'y interesser de plus pres.

  11. #11
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Et bien, c'est juste une boîte de dialogue parfaitement redimensionnable, son comportement est normal.

    Comme tu fixes la largeur maximale de la lineEdit à 50 pixels (à peine six caractère !) il est possible que sur un écran haute résolution ça apparaisse fort petit, mais c'est le seul problème que je voie.

    Essaye sans fixer la taille du lineEdit et donne lui deux colonnes de largeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            #self.lineEdit.setMaximumSize(QtCore.QSize(50, 16777215))
            self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 2)

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour votre aide. J'ai finalement utilisé la méthode de Tyrtamos en travaillant sur les pixels.

    Voici le code que j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def resize_app(application, window):
    	desktop = QtGui.QApplication.desktop()
    	width = application.width()*desktop.width()/1600         # 1600 is our screen width
    	height = application.height()*desktop.height()/838       # 838 is our screen height
    	window.resize(width, height)

  13. #13
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Si c'était pour en arriver là tu aurais pu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dialog.showFullScreen()

Discussions similaires

  1. Utiliser une interface graphique
    Par Titi41 dans le forum Prolog
    Réponses: 1
    Dernier message: 17/05/2009, 20h08
  2. Réponses: 1
    Dernier message: 07/11/2008, 19h55
  3. Problème d'apparence d'une interface graphique sur différentes machines
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 27/06/2007, 13h54
  4. [IHM] Réaliser une interface graphique sur mac
    Par fjgaston dans le forum Développement OS X
    Réponses: 7
    Dernier message: 25/06/2007, 15h54
  5. Problème d'apparence d'une interface graphique sur différentes machines
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 12/06/2007, 11h37

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