diff --git a/aula201/aula0005.py b/aula201/aula0005.py new file mode 100644 index 0000000..9d359d5 --- /dev/null +++ b/aula201/aula0005.py @@ -0,0 +1,68 @@ +# O básico sobre Signal e Slots (eventos e documentação) +import sys + +from PySide6.QtCore import Slot +from PySide6.QtWidgets import (QApplication, QGridLayout, QMainWindow, + QPushButton, QWidget) + +app = QApplication(sys.argv) +window = QMainWindow() +central_widget = QWidget() +window.setCentralWidget(central_widget) +window.setWindowTitle('Minha janela bonita') + +botao1 = QPushButton('Texto do botão') +botao1.setStyleSheet('font-size: 80px;') + +botao2 = QPushButton('Botão 2') +botao2.setStyleSheet('font-size: 40px;') + +botao3 = QPushButton('Botão 3') +botao3.setStyleSheet('font-size: 40px;') + +layout = QGridLayout() +central_widget.setLayout(layout) + +layout.addWidget(botao1, 1, 1, 1, 1) +layout.addWidget(botao2, 1, 2, 1, 1) +layout.addWidget(botao3, 3, 1, 1, 2) + + +@Slot() +def slot_example(status_bar): + def inner(): + status_bar.showMessage('O meu slot foi executado') + return inner + + +@Slot() +def outro_slot(checked): + print('Está marcado?', checked) + + +@Slot() +def terceiro_slot(action): + def inner(): + outro_slot(action.isChecked()) + return inner + + +# statusBar +status_bar = window.statusBar() +status_bar.showMessage('Mostrar mensagem na barra') + +# menuBar +menu = window.menuBar() +primeiro_menu = menu.addMenu('Primeiro menu') +primeira_acao = primeiro_menu.addAction('Primeira ação') +primeira_acao.triggered.connect(slot_example(status_bar)) # type:ignore + +segunda_action = primeiro_menu.addAction('Segunda ação') +segunda_action.setCheckable(True) +segunda_action.toggled.connect(outro_slot) # type:ignore +segunda_action.hovered.connect(terceiro_slot(segunda_action)) # type:ignore + +botao1.clicked.connect(terceiro_slot(segunda_action)) # type:ignore + +window.show() +app.exec() # O loop da aplicação