PyQt5 Tutorials

Botões PyQt5: Um Guia Completo

Spread the love

Este tutorial fornece uma introdução abrangente ao widget QPushButton do PyQt5 e sua interação com outros elementos principais. Vamos construir sobre uma implementação básica de botão, explorando técnicas de estilo e tratamento de eventos para criar aplicativos interativos e visualmente atraentes.

Sumário

  1. Criando um Botão
  2. Estilizando o Botão
  3. Lidando com Cliques no Botão: Sinais e Slots
  4. Integrando com QLabel: Exibindo Informações
  5. Estilização Avançada com QStyleSheet

1. Criando um Botão

O QPushButton é um bloco de construção fundamental no desenvolvimento de GUIs PyQt5. Vamos criar um botão simples:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Meu App PyQt5")

button = QPushButton("Clique em Mim!")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Este código cria uma janela contendo um botão com a etiqueta “Clique em Mim!”. O botão está atualmente inativo; adicionaremos funcionalidade na próxima seção.

2. Estilizando o Botão

PyQt5 oferece várias maneiras de personalizar a aparência dos seus botões. Podemos alterar o texto, a fonte e até mesmo adicionar ícones:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QFont, QIcon

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Botão Estilizado")

button = QPushButton("Clique em Mim!")
button.setFont(QFont('Arial', 12)) # define a fonte
button.setIcon(QIcon('path/to/your/icon.png')) # adiciona um ícone (substitua pelo caminho do seu ícone)
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Lembre-se de substituir 'path/to/your/icon.png' pelo caminho real para o seu arquivo de ícone.

3. Lidando com Cliques no Botão: Sinais e Slots

Para tornar o botão interativo, usamos sinais e slots. Um sinal é emitido quando um evento ocorre (como um clique no botão), e um slot é uma função que responde ao sinal.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Botão Interativo")

button = QPushButton("Clique em Mim!")
label = QLabel("Botão ainda não clicado.")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window.setLayout(layout)

def on_button_click():
    label.setText("Botão clicado!")

button.clicked.connect(on_button_click) # conecta o sinal ao slot

window.show()
sys.exit(app.exec_())

Este exemplo conecta o sinal clicked do botão à função on_button_click, que atualiza um rótulo para indicar que o botão foi pressionado.

4. Integrando com QLabel: Exibindo Informações

Os widgets QLabel são ideais para exibir texto ou imagens juntamente com botões. Veja como combiná-los:


# (O código da seção 3 pode ser estendido aqui para incluir um QLabel para exibir informações)

(O código da seção 3 pode ser facilmente estendido para incluir um QLabel para exibir informações. Para brevidade, isso não é explicitamente mostrado aqui, mas o conceito é demonstrado no exemplo anterior.)

5. Estilização Avançada com QStyleSheet

Para estilos mais complexos, use QStyleSheet. Isso permite que você aplique estilos semelhantes a CSS aos seus widgets.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Exemplo QStyleSheet")

button = QPushButton("Clique em Mim!")
button.setStyleSheet("QPushButton { background-color: lightblue; color: darkblue; border-radius: 10px; padding: 10px; }")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())

Isso usa QStyleSheet para estilizar o botão com um fundo azul claro, texto azul escuro, cantos arredondados e preenchimento.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *