在Qt Designer中创建了一个界面,界面上有一个PushButton按钮,命名为PushButton_1,中文名是“检索”,想在点击此检索按钮时,触发查询物性的功能。
查询物性的功能通过代码定义在一个名为sqlquery_1的函数中。
信号与槽实现连接的代码如下:
self.PushButton_1.clicked.connect(self.sqlquery_1)
完成
代码解释如下:
self.PushButton_1.clicked
PushButton_1按钮中有一个函数clicked(),用来表示鼠标点击时发射一个信号,信号内容就是PushButton_1这个按钮被点击了。对应代码:self.PushButton_1.clicked,这个就是常说的“信号”。
self.sqlquery_1
这个是待会要自定的一个函数,函数内容就包括对数据库进行特定的查询,这就是常说的槽。
其实信号与槽应该说成信号与槽函数更好一些。信号发出者与信号接收者(槽函数)
connect
这个是将信号(PushButton_1.clicked)(点击检索按钮)与槽函数(self.sqlquery_1)相连接,即书中所说的相关联。
这三者组合在一起就是一个简单的信号与槽的关联。当你的py文件运行后,在启动的GUI界面点击检索按钮,其关联的槽函数就会自动启动,去执行槽函数里定义的内容(对数据库进行特定的检索)。
再举几个例子
self.radioButton_2.toggled.connect(self.radioButton_2_Precise)
self.tableView_1.clicked.connect(self.clicked_value_row_Number_only)
信号与槽连接的代码我都是写在def __init__()对应的代码块中,就是跟类的属性有关的那一堆代码中。
通用格式
sender.signalName.connect(receiver.slotName)
书上说的晦涩难懂,简单翻译一下就是
PyQt5界面的按钮.对应的信号发出操作(有clicked、triggerd、toggled等).连接(connect).(槽函数)
知道这些就能创建界面了。
CSDN论坛里大量例子用的是pyqtSignal()、emit、@pyqtSlot,这些出现在自定义信号的使用这一节,但感觉初学者或者只是想用界面实现简单的功能没必要用这些,上文举的例子足够。
最近也是刚刚捋清简单信号与槽的关联,以及其余pyqtSignal()、emit、@pyqtSlot的区别,待有机会再来聊聊复杂的方法。