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
- Criando um Botão
- Estilizando o Botão
- Lidando com Cliques no Botão: Sinais e Slots
- Integrando com QLabel: Exibindo Informações
- 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.