默认的窗体属性中,objectName(部件名称,其他程序引用时使用)默认为Dialog,windowTitle(窗体标题)默认也是Dialog。我们可以根据自己的需要,对对话框的各个属性进行修改。这里,我只修改了windowTitle为“PyQt Demo”,并改变了其大小。
3.2、添加部件
从左侧的widget box中拖出3个PushButton,1个label。修改它们的objectName、text等属性。其中3个PushButton的ObjectName分别为btn1、btn2、btnClose。
添加后的效果图,如下图所示:
4、信号与槽
4.1、概念
在PyQt5中,事件处理的相关术语为“信号(signal)”和“槽(slot)”。
信号的含义就是我们常说的事件,比如按钮被按下、复选框勾选状态变更、可输入文本框文本变更等等。
槽的含义则是事件处理函数,比如关闭窗体、隐藏窗体、最大/小化、设置焦点、重绘等。
4.2、使用一个自带的槽
我们从工具栏中,选择【编辑信号/槽】。
拖动要编辑的部件,会出现一个类似于电路中接地符号的标志,并弹出对话框。
这里,我们选择clicked(),即按钮被按下,此时看到右侧可选的槽并不多,并且没有我们希望使用到的关闭功能。
勾选【显示从QWidget继承的信号和槽】,这时可以发现,右侧的槽多了很多。在其中找到close(),点击确定。此时,点击【关闭】按钮执行对话框关闭的功能就已经实现了。
下图是已经创建了【关闭】按钮槽之后的窗体设计图。
4.3、第一次运行
虽然只实现了一个关闭功能,但是还是让我们先来看看如何运行这个到目前为止一行代码都没有写过的程序吧。
现在回到eric的界面,右键“demo2.ui”,选择【编译窗体】。
短暂的时间过后,可以看到编译成功提示。这时,我们切换到【源代码】选项卡,可以看到一个名为Ui_demo2.py的文件,这就是根据刚才那个ui文件自动编译而成的,我们不需要对其进行任何修改,也不应当对其进行任何修改,因为,任何对这种文件,在下次编译后,之前的修改会全部不存在。
看,下图,就是我们第一次运行时的场景。在eric里,我们可以F2直接运行,或F5进行调试。当按下【关闭】的时候,窗体就会被关闭。
4.4、创建自定义槽
使用自带槽的方式很简单,然而,它所能实现的功能也是有限的,在我们的开发中,绝大多数信号发生时,不会使用默认的槽。因此,这一小节将通过按钮1、2的实现来介绍如何创建一个自定义槽。
自定义槽,就要求自己写其中的槽函数,而之前的操作中,我们还没有动手写过一次代码,那么这个槽的代码写在哪里呢?
我们再切换回【窗体】选项卡,右键demo2.ui,选择【生成对话框代码】。
首先,点击【新建】,新建一个类,在这里可以修改类名、文件名和路径。
然后在下面的选框中,选择自己需要使用到的信号。比如,我的选择如下图所示,是两个按钮被按下时的信号: