Enregistrement de test pour débutant PyQt5 (1): De l'installation de PyQt5 au saut entre les fenêtres

Avant - propos : Cet enregistrement est une simple note pendant le processus d'auto-apprentissage de l'auteur. Il explique le processus depuis l'installation de la bibliothèque pour finalement l'empaqueter en .exe. Il est divisé en trois parties pour que les débutants puissent s'y référer et les échanger. Veuillez les lecteurs s'il y a des erreurs dans la description. Pour obtenir des conseils, la première partie de la liste est ci-dessous.

1. Préparation préliminaire

1. Installez PyQt5

La valeur par défaut en pip install pyqt5raison du délai de réponse peut échouer, la mise en miroir de l'utilisation domestique (comme une image miroir de Tsinghua) une installation plus rapide, une première bibliothèque est pyqt5, la seconde est la boîte à outils d'interface visuelle (Qt Designer), commande cmd comme suit:

$ pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
$ pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

Testez-le après l'installation. Si une fenêtre est ouverte, le code de test est le suivant:

import sys
from PyQt5.QtWidgets import QWidget, QApplication

app = QApplication(sys.argv)
widget = QWidget()
widget.resize(300, 200)
widget.setWindowTitle("Hello, PyQt5!")
widget.show()
sys.exit(app.exec())

Insérez la description de l'image ici

2. Paramètres d'association de l'outil PyCharm

( L'IDE utilisé par l'auteur est PyCharm  ) Si vous ne voulez pas écrire beaucoup de code pour générer vous-même l'interface, vous devez utiliser Qt Designer, dans lequel divers contrôles sont glissés et déposés, et vous pouvez vous concentrer sur l'implémentation de la fonction. Le chemin de démarrage de Qt Designer se trouve dans le répertoire d'installation de Python:Lib\site-packages\pyqt5_tools\Qt\bin

C'est le programme → Insérez la description de l'image ici

Cependant, il est trop compliqué de l'ouvrir à chaque fois. Vous pouvez ajouter des extensions d'outils à PyCharm pour faciliter le démarrage. Voici comment associer des outils:
Tout d'abord, ouvrez le panneau Paramètres de PyCharm et recherchez Outils externes;
Insérez la description de l'image ici

Ajoutez l'outil QtDesigner, remplissez le chemin du designer.exe ci-dessus dans Programe et remplissez le répertoire de travail $FileDir$;
Insérez la description de l'image ici

Ajoutez l'outil PyUic pour convertir le fichier d'interface (.ui) édité par Qt Designer en un fichier Python (.py), remplissez le chemin de python.exe dans le répertoire d'installation de Python dans Programe, remplissez Arguments et remplissez le -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.pyrépertoire de travail $FileDir$;
Insérez la description de l'image ici

Après le paramétrage, recherchez QtDesigner dans Outils dans la barre de menu, puis cliquez pour démarrer Remarque : PyUic n'est pas utilisé ici, et je continuerai à l'introduire plus tard.
Insérez la description de l'image ici

Résumé : L'installation de pyqt5 m'a vraiment pris beaucoup de temps. L'installation du point de chargement par défaut est trop lente et trop facile pour échouer. De plus, si l'importation de from échoue, vous devrez peut-être copier les dossiers associés à pyqt5 de Lib \ site-packages sous le répertoire d'installation de Python vers le chemin du projet Dans Lib \ site-packages , cela est lié au chemin de travail de l'interpréteur.L'installation normale ne devrait pas poser de problème haha.

2. Commencez à utiliser Qt Designer

Voici l'interface de Qt Designer. Vous pouvez faire glisser et déposer divers contrôles sur le formulaire de gauche, et vous pouvez simplement définir les propriétés du contrôle sur la droite. Différents formulaires ont différentes méthodes et scénarios d'utilisation à choisir en fonction de vos besoins. Vous pouvez d'abord créer un formulaire de type Widget;
Insérez la description de l'image ici

L'auteur utilise PyQt5 pour ajouter une interface d'opération au robot d'exploration. Enfin, il peut être regroupé dans un fichier .exe pour un démarrage et une utilisation faciles. La figure ci-dessous est une fenêtre de sélection de fonction initiale. Cliquez sur le bouton pour accéder à une autre page de fonction, qui est la page d'accueil / page de navigation. (L' embellissement d'interface ne sera pas effectué dans cette expérience. Le contenu de cette parenthèse est utilisé pour faire des excuses pour l'interface laide );
https://s1.ax1x.com/2020/05/11/YGBBUx.png

Créez un bouton via le contrôle Bouton poussoir sur la gauche et définissez le nom du bouton sur la droite, qui est le nom de l'objet utilisé en Python. La convention de dénomination de l'auteur est "nom de contrôle abbreviation_location_window_function description", comme le premier bouton Pour: Après avoir cliqué sur la fenêtre principale, entrez dans la page des informations de base de l'exploration ( car elle est stockée en .xlsx après l'exploration, elle s'appelle getXlsx, ce qui est un peu fastidieux, haha, la méthode de nommage n'est pas professionnelle, principalement pour faciliter la mémoire, afin de ne pas la retrouver plus tard Cette chose );
Insérez la description de l'image ici

Après avoir dessiné l'interface, vous pouvez l'enregistrer dans le répertoire du projet. Créez un dossier pour stocker les fichiers d'interface. Le fichier enregistré est un fichier .ui ( également nommé haha ​​= v =: description de la fonction + type de formulaire ). pour utiliser le mentionné précédemment PyUic! Trouvé dans le fichier de droite-ui généré à PyUic cliquez loin, puis il générerait un fichier .py correspondant, faites attention : la nécessité de modifier à chaque fois après .ui dans Qt Designer dans le PyUictemps, et il n'est pas recommandé de modifier le .py correspondant, L'essentiel est de ne pas écrire le code de fonction, car lePyUic .py correspondant est également réinitialisé après le redémarrage ;
Insérez la description de l'image ici

Ensuite, créez une page getXlsxWidget pour explorer les informations de base. La disposition n'est pas utilisée et les contrôles sont un peu haha, puis divisez-les lentement en blocs. Le robot d'exploration utilisé par l'auteur est utilisé pour explorer une certaine liste d'informations d'un certain système. Selon les besoins de la requête, divers contrôles sont définis pour recevoir des paramètres, et il y a quelques boutons de fonction requis et un panneau pour les informations de retour (en bas à droite Cette touffe de gris ).
Insérez la description de l'image ici

De cette façon, la page de base et les commandes sont présentées.
Résumé : N'oubliez pas qu'après la mise à jour de l'interface dans Qt Designer, utilisez PyUic pour reconstruire .ui afin de générer le .py correspondant.

Troisièmement, la réalisation du saut entre l'écran de démarrage et la fenêtre

Maintenant que deux fenêtres ont été construites, commençons à sauter entre elles hahaha! (Pour l'instant, je suis un peu excité, le style d'écriture a légèrement changé) D'abord créer un nouveau .py dédié aux différentes fonctions de l'interface, je vais gérer Il s'appelle MainFuntion.py. Puis lancez le code, importez les modules nécessaires depuis PyQt5, et importez le .py correspondant à l'interface créée auparavant;

from PyQt5.QtWidgets import QWidget,QApplication,QMessageBox
from QtFile import mainWidget,getXlsxWidget #之前建的两个页面

Continuez à coder la classe de fonction de la page d'accueil, laissez-la hériter de l'interface utilisateur de Qwidget et de sa propre fenêtre __init__, écrivez les paramètres associés au contrôle qu'elle contient et écrivez la méthode pour réaliser la fonction. La syntaxe Qt est assez simple à comprendre, comme l'opération de base consistant à cliquer sur un bouton: "un bouton. Est cliqué. Connecté pour exécuter (une méthode)";

'''--------------- # 主页功能类-----------------'''
class MainForm(QWidget,mainWidget.Ui_Form):
    def __init__(self):
        super(MainForm, self).__init__()
        self.setupUi(self)
        self.pB_main_getXlsx.clicked.connect(self.open_getXlsxWidget) # 点击pB_main_getXlsx按钮执行open_getXlsxWidget()
        self.pB_main_getDetail.clicked.connect(self.hint)
        self.pB_main_other.clicked.connect(self.hint)
        
    def open_getXlsxWidget(self): # 打开爬取基本页窗口
        self.hide() #隐藏主页窗口
        self.wid = getXlsxForm() # 实例化另一个页面的对象
        self.wid.show() # 打开新页面
        self.wid.setWindowTitle("爬取基本页信息")
        
    def hint(self):
        QMessageBox.about(self,"说明","该功能有待拓展!")

Le code ci-dessus est réalisé en cliquant sur le bouton sur la page d'accueil pour ouvrir une nouvelle page et masquer la page d'accueil.Le schéma de principe est montré ci-dessous. Quelle QMessageBox.aboutfonction est de pop-up des boîtes;
Insérez la description de l'image ici

Vient ensuite la page de fonction réelle, réécrivez l'événement de fermeture de fenêtre et revenez à la page d'origine après avoir fermé la fenêtre en cours;

'''------------------- # 爬取基本页功能类 --------------------'''
class getXlsxForm(QWidget,getXlsxWidget.Ui_Form):
    def __init__(self):
        super(getDetailForm, self).__init__()
        self.setupUi(self)

    def closeEvent(self, event): #重写closeEvent(),关闭后返回主窗口
        self.wid = MainForm()
        self.wid.show()
        self.wid.setWindowTitle(strTitle)

D'ACCORD! Essayons donc l'effet, plus le code en cours d'exécution, la partie commentée est l'écran de démarrage du programme utilisé pour installer B, voir la figure ci-dessous. Comme il n'y a rien à charger, réglez manuellement l' sleepécran pour qu'il reste pendant un certain temps Remarque : l' finishécran de démarrage doit se terminer après l'ouverture de la page principale ;

'''-------------------# 窗口运行 ---------------------'''
if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = getXlsxForm()
    strTitle = "NewSysCrawler测试版20.4.16"
    # splash = QSplashScreen(QPixmap("./QtFile/images/welcome.png")) # 加载启动画面
    # splash.showMessage("Beta version 20.4.7", Qt.AlignLeft | Qt.AlignBottom, Qt.white) # 设置文字:左下角、白色
    # splash.setFont(QFont('Microsoft YaHei UI', 12)) # 设置字体
    # splash.show() # 显示启动画面
    # time.sleep(1.5)
    widget.setWindowTitle(strTitle)
    widget.show()
    # splash.finish(widget) # 结束启动
    sys.exit(app.exec())

Insérez la description de l'image ici

Résumé : Le cœur de cette partie est "un bouton. Cliqué. Connecté pour exécuter (une méthode)". Il suffit d'utiliser PyQt5 pour réaliser une opération simple et maîtriser cet article (brouillard ... léger spray).


La partie suivante continuera à expliquer comment obtenir des paramètres à partir de l'interface, et utiliser le contrôle du calendrier, définir les icônes des boutons, les conseils de contenu, etc.

Je suppose que tu aimes

Origine blog.csdn.net/zohan134/article/details/106156402
conseillé
Classement