[PYTHON] Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide

introduction

Puisque PySide est un dérivé de Qt, un outil appelé Qt Designer est utile lors du développement d'interfaces graphiques. Il s'agit d'un outil appelé RAD qui vous permet de développer visuellement des interfaces graphiques. En conséquence, un "fichier .ui" est créé, mais il y a une légère habitude de le gérer depuis le code source de PySide (fichier .py) (différent de Qt et PyQt), donc créez un article sous forme de mémorandum. Je le ferai.

Vous pouvez utiliser la partie intégrée à QtCreater, mais si vous souhaitez utiliser QtDesigner seul, ce sera dans le répertoire suivant. J'omettrai comment utiliser QtDesigner car c'est plus familier que l'apprentissage et il existe de nombreuses explications détaillées de la zone Qt.

C:\Python\Lib\site-packages\PySide\designer.exe

Définissez l'interface graphique de la boîte de dialogue avec un fichier .ui

La forme la plus simple est la suivante. On suppose qu'un fichier de description d'interface graphique appelé dialog.ui a été créé. Le processus consiste à lire le fichier .ui avec QUiLoader et à l'afficher avec la fonction show ().

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        #Avec QUiLoader.Lire le fichier ui
        self.dialogUi = QUiLoader().load("./dialog.ui")
        

if __name__ == '__main__':
    #Créer une application Qt
    app = QApplication(sys.argv)
    #Créer et afficher un formulaire
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Démarrez la boucle principale de Qt
    sys.exit(app.exec_())

Utiliser les parties de l'interface graphique décrites dans le fichier .ui

Spécifiez le nom de l'objet modifiable dans le coin supérieur droit de QtDesigner.

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        self.dialogUi = QUiLoader().load("./dialog.ui")
        
        #Définir le texte de l'étiquette
        self.dialogUi.label.setLabel("Hello!")
        #Changer le texte de l'étiquette en appuyant sur un bouton
        self.dialogUi.pushButton.clicked.connect(lambda: self.dialogUi.label.setLabel("World!"))


if __name__ == '__main__':
    #Créer une application Qt
    app = QApplication(sys.argv)
    #Créer et afficher un formulaire
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Démarrez la boucle principale de Qt
    sys.exit(app.exec_())

Définissez l'interface graphique de Wijed dans un fichier .ui et ajoutez-le à la boîte de dialogue

C'est comme suit.

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        self.dialogUi = QUiLoader().load("./dialog.ui")

        self.dialogUi.label.setText("Hello!")
        self.dialogUi.pushButton.clicked.connect(lambda: self.dialogUi.label.setText("World!"))

        #Charger le fichier d'interface utilisateur avec QUiLoader
        self.widgetUi = QUiLoader().load("./widget.ui")
        #Ajouter un widget à la présentation principale de la boîte de dialogue
        self.dialogUi.verticalLayout.addWidget(self.widgetUi)
        

if __name__ == '__main__':
    #Créer une application Qt
    app = QApplication(sys.argv)
    #Créer et afficher un formulaire
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Démarrez la boucle principale de Qt
    sys.exit(app.exec_())

À la fin

C'est tout pour gérer les fichiers .ui dans PySide.

En fait, il y a un problème avec la configuration de l'interface graphique à l'aide du fichier .ui dans PySide. Ajoutez self.show () dans la fonction \ _ \ _ init \ _ \ _ (), ou si \ _ \ _ nom \ _ \ _ == '\ _ \ _ main \ _ \ _': boucle principale Si vous ajoutez mainWin.show () à l'intérieur, une fenêtre propre sera affichée séparément de l'interface graphique créée par QtDesigner. Il s'agit de l'interface graphique de la classe Dialog elle-même, qui a été créée à l'origine en héritant de la classe QDialog, et à l'heure actuelle (PySide 1.2.2), il ne semble y avoir aucun moyen d'appliquer le fichier .ui ici. Il semble que PySide2 soit au milieu du développement pour prendre en charge Python3 et Qt5, donc j'espère qu'il sera également amélioré.

Recommended Posts

Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide
Comment spécifier un fichier .py à charger au démarrage dans IPython 0.13
[LPIC 101] Comment spécifier le numéro de partition de disque dans le fichier de configuration GRUB
Comment lire des fichiers dans différents répertoires
Comment spécifier un schéma dans les paramètres de la base de données Django
Comment écrire une interface graphique à l'aide de la commande maya
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Comment utiliser la méthode __call__ dans la classe Python
Comment importer des fichiers où vous le souhaitez en Python
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment créer un fichier de configuration
Exporter la liste de clés incluse dans S3 Bucket dans un fichier
[sh] Comment stocker les résultats de l'exécution de la commande dans des variables
Comment déterminer l'existence d'un élément sélénium en Python
Comment obtenir toutes les valeurs possibles dans une expression régulière
PySide --Faites quelque chose en arrière-plan tout en affichant la boîte de dialogue non modale
Comment faire une commande pour lire le fichier de paramètres avec pyramide
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
[Note du débutant] Comment spécifier le chemin de lecture de la bibliothèque en Python
Convertir automatiquement en fichier py lorsque le fichier ui est mis à jour par PySide
Comment obtenir stacktrace en python
Comment spécifier une cible non vérifiée dans Flake8
Comment mettre un numéro de ligne au début d'un fichier CSV
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment utiliser la bibliothèque C en Python
Comment lire un fichier CSV avec Python 2/3
Comment déguiser un fichier ZIP en fichier PNG
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Comment déposer Google Docs dans un dossier dans un fichier .txt avec python
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Comment implémenter un sélecteur de dégradé dans Houdini
Comment spécifier la version TLS dans les requêtes python
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
Comment notifier les canaux Discord en Python
Comment obtenir les fichiers dans le dossier [Python]
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Enregistrer l'objet dans un fichier avec pickle
[Python] Comment dessiner un histogramme avec Matplotlib
N'oubliez pas de fermer le fichier simplement parce qu'il se trouve dans un dossier temporaire
Comment créer une API Rest dans Django
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Comment masquer l'entrée utilisateur dans l'interface graphique PySimple
Ouvrir la boîte de dialogue de fichier avec l'interface graphique Python (tkinter.filedialog)
Comment se moquer d'une fonction publique dans Pytest
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment définir un dossier partagé avec le système d'exploitation hôte dans CentOS7 sur Virtual BOX
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Comment tester unitaire une fonction contenant l'heure actuelle à l'aide de Freezegun en Python