前言
在pyqt5中使用信号与槽的概念,来实现组件的相关交互动作。
信号:外界对组件执行的动作。比如:用鼠标勾选,用鼠标滑过,在文本框中输入文字,鼠标点击按钮等。也可以理解为信号就是一种输入,是用户对界面的各种动作,这些动作通过界面传到了代码中。
槽:界面回应信号执行的动作。比如:更新内容,更新颜色,隐藏/显示内容等。槽就是一种输出,是为了回应用户的动作,所采取的行为。
接下来用QTDesigner实现一个简易的功能:鼠标点击勾选框,来决定文本框的显示/隐藏。
实际操作
首先在工作界面中拖入一个check box,也就是复选框。再拖入一个文本框。
点击edit ->edit signals/slots,随后鼠标点击需要产生信号的组件。如上图所示,点击了复选框,复选框变成红色。
随后可以看到鼠标箭头处出现了一个红色箭头,将该箭头拖动到需要产生槽的组件上,如上图所示,这样就连接好了信号与对应的槽。
这里左边选择复选框的clicked函数,即判断是否勾选;右边选择文本框的setVisble,即执行是否显示;单击右下角ok就可以将两个函数连接。
随后会弹出上图所示的窗口,也就是用来将产生信号的组件的所有动作与产生槽的组件所有动作罗列出来,然后进行组合。
如上图所示,就是信号与槽连接完毕了。
既然有了动作,那就应该在QTDesigner里检测一下动作是否正常。
首先注意界面右下角的信号与槽显示栏,栏目中可以看到增加了一组信号槽。
发送者是checkbox,信号是clicked函数,接受者是textedite,槽是setvisible函数。
点击form ->preview,可以直接预览界面,并进行操作,如上图所示。
预览的时候发现,需要点两次勾选才能第一次设置成功,因此需要返回修改一下。
在check box里面的属性中,找到checked,也就是默认勾选的意思,这样在执行动作的时候就能够严格实现勾选一次切换一次状态了。
按照上一章的内容进行操作,实现可执行界面。