使用toolBox开发应用时,通过Designer设计ui界面时,只能在Designer中设计toolBox放置的位置以及增加标签(包括设定项名称、标签的文本、图标和工具提示信息)以及指定当前项,但无法指定标签部件项对应的部件。因此如果要结合Designer来进行工具箱的应用开发,可以借鉴如下步骤:
- 设计UI界面,并放置toolBox;
- 在ui中鼠标右键选中toolBox,通过“insert page”添加项,并指定项的项名称、标签的文本、图标和工具提示信息。当然如果嫌麻烦或者需要动态生成标签部件项也可以跳过本步骤;
- 为标签部件项指定对应部件
本步骤只能通过代码实现,如果步骤2未执行,则直接使用insertItem和addItem方法进行项的增加,否则需要先使用removeItem()删除对应项再使用insertItem和addItem方法进行项的增加,所以步骤2其实执行后更麻烦,唯一的好处是能预览界面的情况,且标签的文本、图标和tooltip直接获取原来标签的即可无需在代码中指定。
注意:
在调用insertItem和addItem方法时,其QWidget参数为标签部件项下面要显示的部件实例,如上面截图三个项分别是一个自定义窗口、一个QCalendarWidget日历部件、一个QLCDNumber电子显示屏部件,直接用这些对象实例作为参数传递给insertItem和addItem方法。
例如设定电子显示屏显示当前时间的示例代码如下:
clock = QtWidgets.QLCDNumber()
time = QtCore.QTime().currentTime()
clock.display(time.toString("hh:mm"))
icon = QtGui.QIcon(r"c: empicon2.gif")
self.toolBox.addItem(clock, icon, '时钟')
运行界面:
关于工具箱的作用请参考《PyQt(Python+Qt)学习随笔:工具箱(QToolBox)的用途及标签部件项(tabbed widget item)作用介绍》。