Índice
3. Código lógico de ligação de evento de gatilho
0x00 Prefácio:
1. Eventos de sinal (sinal)
(eventos de gatilho, como clique, fechamento, etc. mudanças de estado)
2. Após o slot
capturar o sinal ---> execute o código lógico correspondente
3. Link de slot de sinal
para realização: evento de disparo ---> executar a lógica correspondenteSinais e slots precisam ser unidos para operação
Método:
object.signal.connect (função de slot)
1. Layout de código básico
Pegue o código da caixa de diálogo QDialog anterior como exemplo
Já existe um evento de clique abaixo
(Também precisamos adicionar código lógico e, em seguida, vincular o evento click ao código lógico correspondente)
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QDialog
# 对话框(多运用于弹窗)
class MainWindow(QDialog):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
ok_btn = QPushButton("确定",self)
ok_btn.setGeometry(50,100,100,30)
no_btn = QPushButton("取消", self)
no_btn.setGeometry(300, 100, 100, 30)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 根据命名自己改(我每个都以MainWindow就不改了)
w = MainWindow()
w.setWindowTitle("对话框")
w.show()
sys.exit(app.exec_())
2. Adicione código lógico
Além do código lógico que precisa corresponder ao evento acionador
(Depois de escrever o código lógico, você só precisa vinculá-los)
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QDialog
# 对话框(多运用于弹窗)
class MainWindow(QDialog):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
ok_btn = QPushButton("确定",self)
ok_btn.setGeometry(50,100,100,30)
no_btn = QPushButton("取消", self)
no_btn.setGeometry(300, 100, 100, 30)
#————————————————————————————————————————
# 逻辑代码如下
# 点击事件对应的逻辑函数代码
def ok_clicked(self,arg):
print("点击了ok")
def no_clicked(self,arg):
print("点击了取消")
# ————————————————————————————————————————
if __name__ == '__main__':
app = QApplication(sys.argv)
# 根据命名自己改(我每个都以MainWindow就不改了)
w = MainWindow()
w.setWindowTitle("对话框")
w.show()
sys.exit(app.exec_())
3. Código lógico de ligação de evento de gatilho
método:
object.signal.connect (função de slot)
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QDialog
# 对话框(多运用于弹窗)
class MainWindow(QDialog):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
ok_btn = QPushButton("确定",self)
ok_btn.setGeometry(50,100,100,30)
no_btn = QPushButton("取消", self)
no_btn.setGeometry(300, 100, 100, 30)
# ————————————————————————————————————————————————————————————————————
# 绑定如下
# 绑定按钮的点击事件
ok_btn.clicked.connect(self.ok_clicked)
no_btn.clicked.connect(self.no_clicked)
# —————————————————————————————————————————————————————————————————————
# 点击事件对应的逻辑函数代码
def ok_clicked(self,arg):
print("点击了ok")
def no_clicked(self,arg):
print("点击了取消")
if __name__ == '__main__':
app = QApplication(sys.argv)
# 根据命名自己改(我每个都以MainWindow就不改了)
w = MainWindow()
w.setWindowTitle("对话框")
w.show()
sys.exit(app.exec_())
Você pode ver que o código lógico correspondente é acionado