O básico do pyqt5

O básico do pyqt5
PYQT5 é um módulo Python para o desenvolvimento de aplicativos para desktop da GUI. Está disponível para várias plataformas, como Windows, Mac, Linux, iOS e Android. O Python oferece vários módulos que são, de fato, capazes de desenvolvimento da GUI, como Tkiner, Wxpython, Pyside2 e mais. No entanto, o PYQT5 utiliza mais de 1000 classes; De fato, Pyqt5 é um módulo enorme! Além disso, o PYQT5 inclui um designer QT, um designer gráfico de interface de usuário, que facilita ainda mais a criação da GUI. Pode ser usado para criar qualquer coisa, desde players de mídia a navegadores da web. Neste tutorial, aprenderemos o básico do módulo PYQT5.

Primeiro, vamos instalar o PYQT5:

pip install pyqt5
PIP Instale o PYQT5-Tools

Etapa 1: Criando a janela em branco

O primeiro passo para criar qualquer coisa é configurar a janela em branco. A janela em branco requer algumas linhas de código, então vamos olhar para isso.

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow
Importar sistemas
De pyqt5 importar qtgui
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()

Defina a geometria da janela usando o método setgeometry (), que leva quatro argumentos - a posição X inicial, a posição Y inicial (em outras palavras, onde o canto superior esquerdo aparece na tela), a largura e a altura do janela.

auto.Setgeometria (350, 100, 800, 600)

Defina o título da janela com o método setWindowTitle ().

auto.setWindowtitle ("pyqt5")

Você pode definir o ícone usando setWindowicon (). Observe que o ícone deve ter 64 pixels em 64 pixels.

auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))

Cada arquivo pyqt5 requer esta próxima linha que leva sys.argv como um argumento.

APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)

Em seguida, crie uma instância da classe que criamos acima.

win = window ()
ganhar.mostrar()

Para sair da janela pressionando o botão X, precisamos de sistemas.Sair da aplicação.EXEC ()).

sys.Sair da aplicação.EXEC ())

Este código criará uma janela em branco. O código como um todo seria assim:

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow
Importar sistemas
De pyqt5 importar qtgui
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()
auto.Setgeometria (350, 100, 800, 600)
auto.setWindowtitle ("pyqt5")
auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))
APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)
win = window ()
ganhar.mostrar()
sys.Sair da aplicação.EXEC ())

Etapa 2: Barra de entrada

Em seguida, vamos criar uma barra de entrada. Uma barra de entrada é um lugar onde os usuários podem adicionar texto que podemos recuperar. As barras de entrada são criadas usando QWidgets.Qlineedit (). Obviamente, definimos sua geometria usando o método setgeometry ().

def initui (self):
auto.input_bar = qtwidgets.Qlineedit (self)
auto.input_bar.Setgeometria (150, 250, 500, 40)

Lembre -se; Você ainda precisa ativar a função no método __init__ da seguinte forma:

auto.initui ()

O código na íntegra neste momento seria assim:

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow
Importar sistemas
De pyqt5 importar qtgui
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()
auto.Setgeometria (350, 100, 800, 600)
auto.setWindowtitle ("pyqt5")
auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))
auto.initui ()
def initui (self):
auto.input_bar = qtwidgets.Qlineedit (self)
auto.input_bar.Setgeometria (150, 250, 500, 40)
APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)
win = window ()
ganhar.mostrar()
sys.Sair da aplicação.EXEC ())

Etapa 3: Criando botões

Agora, vamos adicionar alguns botões à tela em branco. Então, vamos escrever o código para o botão. Para o botão, usamos Qtwidgets.Qpushbutton (). Como de costume, podemos definir sua geometria usando o método setgeometry ().

auto.Button1 = QtWidgets.Qpushbutton ("show", eu)
auto.Button1.Setgeometria (275, 350, 200, 50)

Defina o ícone usando o método seticon ().

auto.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))

Defina o estilo do texto usando o método setStylesheet (). Você pode alterar a cor, o peso da fonte e o tamanho da fonte, entre outros.

auto.Button1.setStylesheet ("cor: preto")
auto.Button1.SetStylesheet ("Fonte-peso: negrito")
auto.Button1.SetStylesheet ("Size da fonte: 18pt")

Para obter o botão para fazer algo quando ele é clicado, você precisa dizer ao botão que ele precisa ativar uma função quando é clicado. Isso é feito usando cliques.Connect (), onde a função ativada é passada como um argumento. No meu caso, é:

auto.Button1.clicado.Conecte -se (self.Button_Clicked)

Em seguida, definimos a função a ser chamada ou ativada quando o botão é pressionado. Por enquanto, vamos imprimi -lo no console.

def button_clicked (self):
url_value = self.input_bar.texto()
Imprimir (url_value)

O código como um todo agora ficaria assim:

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow
Importar sistemas
De pyqt5 importar qtgui
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()
auto.Setgeometria (350, 100, 800, 600)
auto.setWindowtitle ("pyqt5")
auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))
auto.initui ()
def initui (self):
auto.input_bar = qtwidgets.Qlineedit (self)
auto.input_bar.Setgeometria (150, 250, 500, 40)
auto.Button1 = QtWidgets.Qpushbutton ("show", eu)
auto.Button1.Setgeometria (275, 350, 200, 50)
auto.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
auto.Button1.setStylesheet ("cor: preto")
auto.Button1.SetStylesheet ("Fonte-peso: negrito")
auto.Button1.SetStylesheet ("Size da fonte: 18pt")
auto.Button1.clicado.Conecte -se (self.Button_Clicked)
def button_clicked (self):
url_value = self.input_bar.texto()
Imprimir (url_value)
APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)
win = window ()
ganhar.mostrar()
sys.Sair da aplicação.EXEC ())

Etapa 4: Criando rótulos

Agora vamos modificar o comando Pressione o botão usando QLABELS. Qlabels são usados ​​para adicionar texto. Adicionamos isso a def initui (self).

auto.Rótulo = QtWidgets.Qlabel (self)

Definimos o texto no rótulo usando o método setText ().

auto.rótulo.setText ("Altere este título clicando no botão")
auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))

Definimos a fonte, o tamanho e o peso usando o SetStylesheet ().Definimos a fonte, o tamanho e o peso usando o SetStylesheet ().

auto.rótulo.SetStylesheet ("Fonte-peso: negrito")
auto.rótulo.SetStylesheet ("Size da fonte: 18pt")

E, finalmente, atualizamos tudo usando o método update ().

auto.rótulo.atualizar()

Isso cria o seguinte:

Agora, podemos alterar o conteúdo na função button_clicked ().

def button_clicked (self):

Podemos recuperar o que o usuário grava na barra de texto usando o método text ().

url_value = self.input_bar.texto()

Em seguida, podemos alterar o rótulo após clicar em usar o método setText () e colocá -los no local certo usando o método setgeometry ().

auto.rótulo.setText (url_value)
auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))

O código como um todo agora ficaria assim:

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow
Importar sistemas
De Pyqt5 importar qtgui, qtcore
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()
auto.Setgeometria (350, 100, 800, 600)
auto.setWindowtitle ("pyqt5")
auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))
auto.initui ()
def initui (self):
auto.input_bar = qtwidgets.Qlineedit (self)
auto.input_bar.Setgeometria (150, 250, 500, 40)
auto.Button1 = QtWidgets.Qpushbutton ("show", eu)
auto.Button1.Setgeometria (275, 350, 200, 50)
auto.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
auto.Button1.setStylesheet ("cor: preto")
auto.Button1.SetStylesheet ("Fonte-peso: negrito")
auto.Button1.SetStylesheet ("Size da fonte: 18pt")
auto.Button1.clicado.Conecte -se (self.Button_Clicked)
auto.Rótulo = QtWidgets.Qlabel (self)
auto.rótulo.setText ("Altere este título clicando no botão")
auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))
auto.rótulo.SetStylesheet ("Fonte-peso: negrito")
auto.rótulo.SetStylesheet ("Size da fonte: 18pt")
auto.rótulo.atualizar()
def button_clicked (self):
url_value = self.input_bar.texto()
auto.rótulo.setText (url_value)
auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))
APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)
win = window ()
ganhar.mostrar()
sys.Sair da aplicação.EXEC ())

Etapa 5: QvboxLayout e Qhboxlayout

EU Não vait estar adicionando um qvboxlayout ou qhboxlayout aqui, mas você pode se quiser. Qhboxlayout organizará tudo em um padrão horizontal, e o QvBoxlayout organizará -o verticalmente. Se você usar Qhboxlayout ou QvBoxlayout, você deve omitir o método Setgeometry ().

Se você quisesse adicioná -lo, escreveria o seguinte em def initui (self). Você primeiro inicializa o layout usando QvBoxlayout ():

auto.design = qvboxlayout ()

Em seguida, você adiciona os widgets que deseja nele usando o método addWidget ().

auto.projeto.addWidget (self.rótulo)
auto.projeto.addWidget (self.input_bar)
auto.projeto.addWidget (self.Button1)

Você define o layout usando setLayout (), que leva a variável inicializada como um argumento.

auto.setLayout (self.projeto)

Eu não preciso disso aqui porque defino tudo com setgeometry (), então vou omitir isso no meu código. No entanto, se você quiser no seu código, todo o código ficaria assim:

De pyqt5 importar qtwidgets
de pyqt5.Qtwidgets importar qapplication, qmainwindow, qhboxlayout, qvboxlayout
Importar sistemas
De Pyqt5 importar qtgui, qtcore
Janela de classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__iniciar__()
#auto.Setgeometria (350, 100, 800, 600)
auto.setWindowtitle ("pyqt5")
auto.SetWindowicon (Qtgui.Qicon ("Rattle.png "))
auto.initui ()
def initui (self):
auto.input_bar = qtwidgets.Qlineedit (self)
#auto.input_bar.Setgeometria (150, 250, 500, 40)
auto.Button1 = QtWidgets.Qpushbutton ("show", eu)
#auto.Button1.Setgeometria (275, 350, 200, 50)
auto.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
auto.Button1.setStylesheet ("cor: preto")
auto.Button1.SetStylesheet ("Fonte-peso: negrito")
auto.Button1.SetStylesheet ("Size da fonte: 18pt")
auto.Button1.clicado.Conecte -se (self.Button_Clicked)
auto.Rótulo = QtWidgets.Qlabel (self)
auto.rótulo.setText ("Altere este título clicando no botão")
#auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))
auto.rótulo.SetStylesheet ("Fonte-peso: negrito")
auto.rótulo.SetStylesheet ("Size da fonte: 18pt")
auto.rótulo.atualizar()
auto.design = qvboxlayout ()
auto.projeto.addWidget (self.rótulo)
auto.projeto.addWidget (self.input_bar)
auto.projeto.addWidget (self.Button1)
auto.setLayout (self.projeto)
def button_clicked (self):
url_value = self.input_bar.texto()
auto.rótulo.setText (url_value)
auto.rótulo.SetGeometria (qtcore.Qrect (200, 80, 500, 100)))
APLICAÇÃO = QAPPLICAÇÃO (SYS.argv)
win = window ()
ganhar.mostrar()
sys.Sair da aplicação.EXEC ())

Etapa 6: Designer QT

O que é ainda melhor com o PYQT5 é que ele vem com seu próprio designer. Um designer é um console onde você pode projetar a GUI que deseja, e o programa irá lançar o código Python para isso. O QT Designer vem no pacote pyqt5-tools, e isso deve ser instalado para que funcione. No designer QT, você pode colocar botões, controles deslizantes, etc.… Depois de colocá -los, você pode salvar o arquivo como um .arquivo da interface do usuário.

Uma vez que o arquivo é salvo como um .arquivo de interface do usuário, você ainda precisa convertê -lo para um .arquivo py para que o PyCharm possa exibi -lo. Para fazer isso, abra um terminal ou um CMD e digite:

pyuic5 -x saved_file_name.ui -o python_file.py

Eu salvei meu arquivo como saved_file_name.Ui. O terminal irá lançar um arquivo python e chamá -lo o que você pediu. Você pode então abrir o .arquivo py no PyCharm e adicione a lógica a ele.

Lembre -se de que, embora possamos usar o designer para projetar o layout da GUI, ainda precisamos adicionar lógica ao código, o que é feito exclusivamente via código Python e não o designer. Infelizmente, o designer QT não adiciona lógica ao código!

Neste tutorial, aprendemos sobre o básico do PYQT5 e como usar o designer QT. Aprendemos que poderíamos criar telas em branco, adicionar botões usando QPUSHButton, adicionar barras de entrada usando QLINEEDIT, adicionar texto usando QLABELs e organizar tudo usando QvBoxlayout/Qhboxlayout. De fato, o PYQT5 é um módulo muito grande usado para criar uma variedade de aplicativos de desktop da GUI. Embora existam muitos módulos para aplicações da GUI no Python, a maioria das pessoas escolhe PYQT5 porque oferece uma enorme escolha de designs e um designer para facilitar as tarefas. De fato, Pyqt5 é um módulo que vale a pena aprender!

Codificação feliz!