Registro de teste de iniciante PyQt5 (1): Desde a instalação do PyQt5 até pular entre janelas

Prefácio : este registro é uma nota simples durante o processo de auto-estudo do autor. Ele explica o processo desde a instalação da biblioteca até finalmente o empacotamento em .exe. É dividido em três partes para que os iniciantes possam consultar e trocar. Por favor, leitores se houver erros na descrição. Para obter conselhos, a primeira parte da lista está abaixo.

1. Preparação preliminar

1. Instale o PyQt5

Padrão pip install pyqt5devido ao tempo limite de resposta pode falhar, espelhando o uso doméstico (como uma imagem espelhada de Tsinghua) instalação mais rápida, uma primeira biblioteca é pyqt5, a segunda é o kit de ferramentas de interface visual (Qt Designer), comando cmd do seguinte modo:

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

Teste-o após a instalação. Se uma janela for aberta, o código de teste é o seguinte:

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())

Insira a descrição da imagem aqui

2. Configurações de associação da ferramenta PyCharm

( O IDE usado pelo autor é o PyCharm  ) Se você não quiser escrever muitos códigos para gerar a interface sozinho, precisará usar o Qt Designer, no qual vários controles são arrastados e soltos, e você pode se concentrar na implementação da função. O caminho de inicialização do Qt Designer está no diretório de instalação do Python:Lib\site-packages\pyqt5_tools\Qt\bin

Este é o programa → Insira a descrição da imagem aqui

No entanto, é muito complicado abri-lo sempre. Você pode adicionar extensões de ferramenta ao PyCharm para torná-lo mais fácil de começar. Veja como associar ferramentas:
Primeiro, abra o painel Configurações do PyCharm e encontre as Ferramentas Externas;
Insira a descrição da imagem aqui

Adicione a ferramenta QtDesigner, preencha o caminho do designer.exe acima no Programe e preencha o diretório de trabalho $FileDir$;
Insira a descrição da imagem aqui

Adicione a ferramenta PyUic para converter o arquivo de interface (.ui) editado pelo Qt Designer em um arquivo Python (.py), preencha o caminho de python.exe no diretório de instalação do Python no Programe, preencha Argumentos e preencha -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.pyDiretório de trabalho $FileDir$;
Insira a descrição da imagem aqui

Após a configuração, encontre o QtDesigner em Ferramentas na barra de menus e clique para iniciar Observação : PyUic não é usado aqui e continuarei a apresentá-lo mais tarde.
Insira a descrição da imagem aqui

Resumo : a instalação de pyqt5 realmente me levou muito tempo. A instalação do ponto de carregamento padrão é muito lenta e fácil de falhar. Além disso, se a importação de não for bem-sucedida, pode ser necessário copiar as pastas relacionadas a pyqt5 de Lib \ site-packages no diretório de instalação Python para o caminho do projeto Em Lib \ site-packages , isso está relacionado ao caminho de trabalho do interpretador.A instalação normal não deve ser problema haha.

2. Comece a usar o Qt Designer

A seguir está a interface do Qt Designer. Você pode arrastar e soltar vários controles no formulário à esquerda e pode simplesmente definir as propriedades do controle à direita. Vários formulários têm diferentes métodos e cenários de uso para escolher de acordo com suas necessidades. Você pode criar um formulário do tipo Widget primeiro;
Insira a descrição da imagem aqui

O autor usa o PyQt5 para adicionar uma interface de operação ao rastreador e, finalmente, pode ser compactado em um arquivo .exe para facilitar a inicialização e operação. A figura abaixo é uma janela de seleção de função inicial. Clique no botão para ir para uma página de função diferente, que é a página inicial / página de navegação. (O embelezamento da interface não será realizado neste experimento. O conteúdo deste colchete é usado para dar desculpas para a interface feia );
https://s1.ax1x.com/2020/05/11/YGBBUx.png

Crie um botão por meio do controle Push Button à esquerda e defina o nome do botão à direita, que é o nome do objeto operado em Python. A convenção de nomenclatura do autor é "nome de controle abbreviation_location_window_function description", como o primeiro botão Para: Depois de clicar na janela principal, entre na página de informações básicas de rastreamento ( porque fica armazenado em .xlsx após o rastreamento, é chamado getXlsx, que é um pouco tedioso, haha, o método de nomenclatura não é profissional, principalmente para facilitar a memória, para não encontrá-lo depois Essa coisa );
Insira a descrição da imagem aqui

Após desenhar a interface, você pode salvá-la no diretório do projeto. Crie uma pasta para armazenar os arquivos da interface. O arquivo salvo é um arquivo .ui ( também denominado haha ​​= v =: descrição da função + tipo de formulário ). para usar o mencionado anteriormente PyUic! Encontrado no arquivo ui certo gerado no PyUic clique de distância, então ele geraria um arquivo .py correspondente, preste atenção : a necessidade de modificar cada vez após .ui no Qt Designer no PyUictempo, e não é recomendado modificar o .py correspondente, O principal é não escrever o código da função, porque oPyUic .py correspondente também é redefinido após a reinicialização ;
Insira a descrição da imagem aqui

Em seguida, crie uma página getXlsxWidget para rastrear informações básicas. O layout não é usado e os controles são um pouco haha, e então lentamente divida-os em blocos. O rastreador usado pelo autor é usado para rastrear uma determinada lista de informações de um determinado sistema. De acordo com as necessidades da consulta, vários controles são definidos para receber parâmetros, e existem alguns botões de função obrigatórios e um painel para informações de feedback (parte inferior direita Esse tufo de cinza ).
Insira a descrição da imagem aqui

Desta forma, a página básica e os controles são dispostos.
Resumo : Lembre-se de que após atualizar a interface no Qt Designer, use o PyUic para reconstruir .ui para gerar o .py correspondente.

Terceiro, a realização do salto entre a tela de inicialização e a janela

Agora que as duas janelas foram construídas, vamos começar a pular entre elas hahaha! (Até agora, estou um pouco animado, o estilo de escrita mudou um pouco) Primeiro crie um novo .py dedicado a várias funções da interface, vou gerenciar É denominado MainFuntion.py. Em seguida, inicie o código, importe os módulos necessários do PyQt5 e importe o .py correspondente à interface criada anteriormente;

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

Continue a codificar a classe de função da página inicial, deixe-a herdar a IU do Qwidget e sua própria janela __init__, escreva as configurações associadas ao controle nela e escreva o método para realizar a função. A sintaxe Qt é bastante fácil de entender, como a operação básica de clicar em um botão: "um botão. É clicado. Conectado para executar (um método)";

'''--------------- # 主页功能类-----------------'''
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,"说明","该功能有待拓展!")

O código acima é realizado clicando no botão na página inicial para abrir uma nova página e ocultar a página inicial.O diagrama esquemático é mostrado abaixo. Qual QMessageBox.aboutfunção é abrir caixas pop-up;
Insira a descrição da imagem aqui

A seguir está a página de função real, reescreva o evento de fechamento da janela e retorne à página original após fechar a janela atual;

'''------------------- # 爬取基本页功能类 --------------------'''
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)

ESTÁ BEM! Então vamos experimentar o efeito, mais o código em execução, a parte comentada é a tela inicial do programa usado para instalar o B, veja a figura abaixo. Como não há nada para carregar, configure manualmente a sleeptela para permanecer por um tempo Nota : a finishtela de inicialização deve ser encerrada após a página principal ser aberta ;

'''-------------------# 窗口运行 ---------------------'''
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())

Insira a descrição da imagem aqui

Resumo : O núcleo desta parte é "um botão. Clicado. Conectado para executar (um método)". Basta usar o PyQt5 para realizar uma operação simples e dominar este artigo (neblina ... spray leve).


A próxima parte continuará a explicar como obter parâmetros da interface e usar o controle de calendário, definir ícones de botão, dicas de conteúdo, etc.

Acho que você gosta

Origin blog.csdn.net/zohan134/article/details/106156402
Recomendado
Clasificación