83 votes

Lier un fichier .ui de qtDesigner à python/pyqt ?

Ainsi, si je vais dans QtDesigner et que je crée une interface utilisateur, celle-ci sera sauvegardée dans un fichier .ui. Comment puis-je en faire un fichier python ou l'utiliser en python ?

1 votes

J'ai utilisé le QUiLoader de PySide pour y parvenir - voir le message [4442286][1][1] : stackoverflow.com/questions/4442286

0 votes

La méthode suivante est encore plus pratique : stackoverflow.com/questions/14892713/

66voto

Max Points 1759

Une autre façon d'utiliser .ui dans votre code est :

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

Les deux approches sont bonnes. N'oubliez pas que si vous utilisez les fichiers de ressources Qt (extrêmement utiles) pour les icônes et autres, vous devez également les compiler :

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

Remarque, lorsque uic compile l'interface, il ajoute 'import images_rc' à la fin du fichier .py, vous devez donc compiler les ressources dans le fichier portant ce nom, ou le renommer dans le code généré.

2 votes

Pourriez-vous ajouter comment accéder à une variable une fois que vous l'avez fait ? Comme pushButton ?

4 votes

@JonathanLeaders Si un bouton est défini dans le fichier .ui, il suffit de l'appeler comme ceci : self.pushButton. Vous pouvez également charger l'ui dans n'importe quel attribut de classe que vous voulez : uic.loadUi('uifile.ui', self.ui) et appeler les widgets et autres comme self.ui.pushButton.

55voto

kermit666 Points 1730

Combinaison de La réponse de Max y Le message de la liste de diffusion de Shriramana Sharma j'ai construit un petit exemple de fonctionnement pour charger un fichier mywindow.ui contenant un QMainWindow (il suffit donc de choisir de créer une fenêtre principale dans l'interface de Qt Designer. File-New dialogue).

Voici le code qui le charge :

import sys
from PyQt4 import QtGui, uic

class MyWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        uic.loadUi('mywindow.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

3 votes

Ce devrait être la meilleure réponse, car il s'agit d'un exemple complet.

30voto

luc Points 13564

Vous devez générer un fichier python à partir de votre fichier ui avec l'outil pyuic (site-packages \pyqt4\bin )

pyuic form1.ui > form1.py

avec pyqt4

pyuic4.bat form1.ui > form1.py

Vous pouvez ensuite importer le form1 dans votre script.

25voto

xopenex Points 118

J'ai trouvé cet article très utile.

http://talk.maemo.org/archive/index.php/t-43663.html

Je vais décrire brièvement les actions pour créer et changer le fichier .ui en fichier .py, tirées de cet article.

  1. Lancez Qt Designer à partir de votre menu de démarrage.
  2. Dans la fenêtre "Nouveau formulaire", créez la "Fenêtre principale".
  3. Depuis "Afficher les widgets" vers le bas de votre "Menu de la boîte à widgets" sur le côté gauche.
    ajouter un "widget d'étiquette". (Cliquez sur "glisser-déposer")
  4. Double-cliquez sur le widget d'étiquette nouvellement ajouté pour changer son nom en "Hello World".
  5. à ce stade, vous pouvez utiliser la touche Control + R pour voir à quoi cela ressemblera.
  6. Ajoutez des boutons, du texte ou d'autres widgets par glisser-déposer si vous le souhaitez.
  7. Maintenant, enregistrez votre formulaire Fichier->Enregistrer sous-> "Hello World.ui" (Control + S fera également apparaître
    l'option "Enregistrer sous") Notez le répertoire dans lequel vous avez enregistré votre fichier .ui "Hello World".
    fichier. (J'ai enregistré le mien dans (C :) pour plus de commodité)

Le fichier est créé et sauvegardé, maintenant nous allons générer le code Python à partir de celui-ci en utilisant pyuic !

  1. Dans votre menu de démarrage, ouvrez une fenêtre de commande.
  2. Maintenant "cd" dans le répertoire où vous avez sauvegardé votre "Hello World.ui" Pour moi, j'ai juste eu à "cd\" et j'étais à l'invite "C:>", où mon "Hello World.ui" était sauvegardé.
  3. Lorsque vous arrivez dans le répertoire où se trouve votre fichier, tapez ce qui suit.
  4. pyuic4 -x helloworld.ui -o helloworld.py
  5. Félicitations ! Vous avez maintenant une application GUI Qt4 en python ! !
  6. Double-cliquez sur votre fichier helloworld.py pour l'exécuter. ( J'utilise pyscripter et au double clic
    il s'ouvre dans pyscripter, puis je "exécute" le fichier à partir de là)

J'espère que cela aidera quelqu'un.

1 votes

Je compilais en utilisant : pyuic4 helloworld.ui > helloworld.py. Il faut vraiment passer les arguments -x et -o à pyuic4. Merci pour l'information !

0 votes

Excellente explication, en particulier le fait que le code de "génération de l'interface graphique" est en fait dans le fichier généré m'a aidé, merci !

9voto

Jeba Points 335

Vous pouvez convertir vos fichiers .ui en un fichier python exécutable à l'aide de la commande suivante

pyuic4 -x form1.ui > form1.py

Maintenant, vous pouvez directement exécuter le fichier python en tant que

python3(whatever version) form1.py

Vous pouvez importer ce fichier et l'utiliser.

0 votes

Pour info, si vous omettez l'option -x, vous n'obtiendrez pas la partie du code qui crée et exécute l'application. J'ai vu quelques réponses qui omettent "-x". Cette réponse est la plus complète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X