【PyQt5-Qt Designer】工具箱(QToolBox)控件的使用

工具箱(QToolBox)+toolButton+tabWidget

总体介绍

QToolBox类提供了一列选项卡的小部件(选项卡内含项目)。

工具箱是一个小部件,它将选项卡一个一个的显示,当前项目显示在当前选项卡下方。每个选项卡在选项卡列中都有一个索引位置。一个选项卡的项目是一个QWidget。

每个项目都有一个itemText(),一个可选的itemIcon(),一个可选的itemToolTip()和一个widget()。项目的属性可以通过setItemText(),setItemIcon()和setItemToolTip()来改变。每个项目都可以使用setItemEnabled()单独启用或禁用。

项目使用addItem()添加,或使用insertItem()插入特定位置。项目总数由count()给出。可以删除项目,或使用removeItem()从工具箱中删除项目。通过组合removeItem()和insertItem(),您可以将项目移动到不同的位置。

当前项目小部件的索引由currentIndex()返回,并用setCurrentIndex()设置。可以使用indexOf()来找到特定项目的索引,并且item()返回给定索引处的项目。

currentChanged()信号在当前项目改变时发出。

更多详细的介绍,请见官网:QToolBox Class | Qt Widgets 5.10

类的归属

PyQt5->QtWidgets->QToolBox

继承:QFrame

小例子

我们先通过一个视频来看一下今天的完成效果:

https://v.vzuu.com/video/942417282891333632

  • 核心代码
class Example(QToolBox):

    def initUI(self):
        self.resize(280,500)
        self.setWindowTitle(‘微信公众号:学点编程吧--QToolBox‘)
        self.setWindowFlags(Qt.Dialog)

        favorites =[
                        [
                            {‘des‘:‘百度搜索‘, ‘pic‘:‘image/se/baidu.ico‘},
                            {‘des‘:‘搜狗搜索‘, ‘pic‘:‘image/se/sougo.ico‘},
                            {‘des‘:‘必应搜索‘, ‘pic‘:‘image/se/bing.ico‘},
                            {‘des‘:‘360搜索‘, ‘pic‘:‘image/se/360.ico‘},
                            {‘des‘:‘谷歌搜索‘, ‘pic‘:‘image/se/google.ico‘},
                            {‘des‘:‘雅虎搜索‘, ‘pic‘:‘image/se/yahoo.ico‘}
                        ],
                        [
                            {‘des‘:‘腾讯视频‘, ‘pic‘:‘image/v/tengxun.ico‘},
                            {‘des‘:‘搜狐视频‘, ‘pic‘:‘image/v/sohuvideo.ico‘},
                            {‘des‘:‘优酷视频‘, ‘pic‘:‘image/v/youku.ico‘},
                            {‘des‘:‘土豆视频‘, ‘pic‘:‘image/v/tudou.ico‘},
                            {‘des‘:‘AcFun弹幕‘, ‘pic‘:‘image/v/acfun.ico‘},
                            {‘des‘:‘哔哩哔哩‘, ‘pic‘:‘image/v/bilibili.ico‘}
                        ]
        ]
        for item in favorites:
            groupbox = QGroupBox()
            vlayout = QVBoxLayout(groupbox)
            vlayout.setAlignment(Qt.AlignCenter)
            for category in item:
                toolButton = QToolButton()
                toolButton.setText(category[‘des‘])
                toolButton.setIcon(QIcon(category[‘pic‘]))
                toolButton.setIconSize(QSize(64, 64))
                toolButton.setAutoRaise(True)
                toolButton.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
                vlayout.addWidget(toolButton)
                name = category[‘des‘]
                toolButton.clicked.connect(Branded Short Domain Powered by Bitly)
                if name == ‘雅虎搜索‘:
                    self.addItem(groupbox,‘搜索引擎‘)
                else:
                    self.addItem(groupbox,‘视频网站‘)
    def run(self):
        if self.sender().text() == ‘百度搜索‘:
            webbrowser.open(‘https://www.baidu.com‘)
        elif self.sender().text() == ‘搜狗搜索‘:
            webbrowser.open(‘https://www.sogou.com/‘)
        #...下面的代码和上面差不多,不再描述

在这个例子当中我们实现了以下的功能:

  1. 将按钮分类搜索和视频两类,并分别集合到不同选项卡中。
  2. 点击按钮会打开对应的网址
  • 代码解析
favorites =[
                [
                    {‘des‘:‘百度搜索‘, ‘pic‘:‘image/se/baidu.ico‘},
                    {‘des‘:‘搜狗搜索‘, ‘pic‘:‘image/se/sougo.ico‘},
                    {‘des‘:‘必应搜索‘, ‘pic‘:‘image/se/bing.ico‘},
                    {‘des‘:‘360搜索‘, ‘pic‘:‘image/se/360.ico‘},
                    {‘des‘:‘谷歌搜索‘, ‘pic‘:‘image/se/google.ico‘},
                    {‘des‘:‘雅虎搜索‘, ‘pic‘:‘image/se/yahoo.ico‘}
                ],
                [
                    {‘des‘:‘腾讯视频‘, ‘pic‘:‘image/v/tengxun.ico‘},
                    {‘des‘:‘搜狐视频‘, ‘pic‘:‘image/v/sohuvideo.ico‘},
                    {‘des‘:‘优酷视频‘, ‘pic‘:‘image/v/youku.ico‘},
                    {‘des‘:‘土豆视频‘, ‘pic‘:‘image/v/tudou.ico‘},
                    {‘des‘:‘AcFun弹幕‘, ‘pic‘:‘image/v/acfun.ico‘},
                    {‘des‘:‘哔哩哔哩‘, ‘pic‘:‘image/v/bilibili.ico‘}
                ]
        ]

因为在程序中我们涉及到了12个按钮,每个按钮显示的图标和名称是不一样的,如果我建立12个按钮对象,再分别设置太麻烦了。

因此 我将不同的部分抽取出来,每一个按钮对应一个字典,而每一类按钮又组合成一个列表,最后将两个不同的列表组合成一个大的列表。

for item in favorites:

将favorites列表中的item进行遍历,每个item代表一个众多按钮的集合,也就是QToolBox的选项卡。

groupbox = QGroupBox()
vlayout = QVBoxLayout(groupbox)
vlayout.setAlignment(Qt.AlignCenter)

我们新建一个组合框,并对其进行垂直布局,布局方式为居中。

QGroupBox小部件提供了一个带有标题的组合框。一个组合框提供了一个框架,顶部的标题,一个键盘快捷键,并显示其内部的各种其他小部件(这点就是我们用到的)。

Qt.AlignCenter是一种对齐方式,我们在

学点编程吧:PyQt5系列教程(21):标签(QLabel)?zhuanlan.zhihu.com  中介绍过,这里就不在详解了。

for category in item:
    toolButton = QToolButton()
    toolButton.setText(category[‘des‘])
    toolButton.setIcon(QIcon(category[‘pic‘]))
    toolButton.setIconSize(QSize(64, 64))
    toolButton.setAutoRaise(True)
    toolButton.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
    vlayout.addWidget(toolButton)

这里我们对每个按钮集合中项目进行遍历。新建QToolBox对象,并设置其相应的属性:显示的名称(是“优酷”还是“哔哩哔哩”)、图标及大小、按钮是否自动浮起、让按钮显示的名称在按钮下方,同时将这个按钮增加到垂直布局当中。

更多关于QToolButton的介绍,请参见

学点编程吧:PyQt5系列教程(23):工具按钮(QToolButton)?zhuanlan.zhihu.com

    name = category[‘des‘]
    if name == ‘雅虎搜索‘:
        self.addItem(groupbox,‘搜索引擎‘)
    else:
        self.addItem(groupbox,‘视频网站‘)

当我们遍历完一个按钮集合的时候,此时我们判断最后一个按钮显示的文字是“搜索引擎”还是“视频网站”,并将这一系列的按钮增加到一个选项卡中。

toolButton.clicked.connect(self.run)
def run(self):
    if self.sender().text() == ‘百度搜索‘:
        webbrowser.open(‘https://www.baidu.com‘)
    elif self.sender().text() == ‘搜狗搜索‘:
        webbrowser.open(‘https://www.sogou.com/‘)
    #...下面的代码和上面差不多,不在描述

这个就是一个常规的信号与槽函数的调用,当我们点击按钮的时候会打开相应的网站。

我参照了上面大佬的代码自己用eric6 敲了一遍

效果如下:

完整代码:

  1 # -*- coding: utf-8 -*-
  2
  3 # Form implementation generated from reading ui file ‘D:\360Downloads\Python编程\PyQt5教程\PyQt5学习资料\PyQt5内容显示系列控件\eric6-QToolBox\toolBox.ui‘
  4 #
  5 # Created by: PyQt5 UI code generator 5.11.3
  6 #
  7 # WARNING! All changes made in this file will be lost!
  8
  9 from PyQt5 import QtCore, QtGui, QtWidgets
 10
 11 class Ui_Dialog(object):
 12     def setupUi(self, Dialog):
 13         Dialog.setObjectName("Dialog")
 14         Dialog.resize(513, 465)
 15         Dialog.setSizeGripEnabled(True)
 16         self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
 17         self.verticalLayout.setObjectName("verticalLayout")
 18         self.tabWidget = QtWidgets.QTabWidget(Dialog)
 19         self.tabWidget.setMinimumSize(QtCore.QSize(0, 361))
 20         self.tabWidget.setStyleSheet("font: 75 14pt \"微软雅黑\";")
 21         self.tabWidget.setObjectName("tabWidget")
 22         self.tabWidgetPage1 = QtWidgets.QWidget()
 23         self.tabWidgetPage1.setObjectName("tabWidgetPage1")
 24         self.gridLayout_2 = QtWidgets.QGridLayout(self.tabWidgetPage1)
 25         self.gridLayout_2.setObjectName("gridLayout_2")
 26         self.toolButton = QtWidgets.QToolButton(self.tabWidgetPage1)
 27         icon = QtGui.QIcon()
 28         icon.addPixmap(QtGui.QPixmap("../image/se/百度.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 29         self.toolButton.setIcon(icon)
 30         self.toolButton.setIconSize(QtCore.QSize(80, 80))
 31         self.toolButton.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 32         self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 33         self.toolButton.setAutoRaise(True)
 34         self.toolButton.setObjectName("toolButton")
 35         self.gridLayout_2.addWidget(self.toolButton, 1, 0, 1, 1)
 36         self.toolButton_2 = QtWidgets.QToolButton(self.tabWidgetPage1)
 37         icon1 = QtGui.QIcon()
 38         icon1.addPixmap(QtGui.QPixmap("../image/se/360.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 39         self.toolButton_2.setIcon(icon1)
 40         self.toolButton_2.setIconSize(QtCore.QSize(80, 80))
 41         self.toolButton_2.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 42         self.toolButton_2.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 43         self.toolButton_2.setAutoRaise(True)
 44         self.toolButton_2.setObjectName("toolButton_2")
 45         self.gridLayout_2.addWidget(self.toolButton_2, 1, 1, 1, 1)
 46         self.toolButton_3 = QtWidgets.QToolButton(self.tabWidgetPage1)
 47         icon2 = QtGui.QIcon()
 48         icon2.addPixmap(QtGui.QPixmap("../image/se/bing.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 49         self.toolButton_3.setIcon(icon2)
 50         self.toolButton_3.setIconSize(QtCore.QSize(80, 80))
 51         self.toolButton_3.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 52         self.toolButton_3.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 53         self.toolButton_3.setAutoRaise(True)
 54         self.toolButton_3.setObjectName("toolButton_3")
 55         self.gridLayout_2.addWidget(self.toolButton_3, 1, 2, 1, 1)
 56         self.toolButton_4 = QtWidgets.QToolButton(self.tabWidgetPage1)
 57         icon3 = QtGui.QIcon()
 58         icon3.addPixmap(QtGui.QPixmap("../image/se/sougo.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 59         self.toolButton_4.setIcon(icon3)
 60         self.toolButton_4.setIconSize(QtCore.QSize(80, 80))
 61         self.toolButton_4.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 62         self.toolButton_4.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 63         self.toolButton_4.setAutoRaise(True)
 64         self.toolButton_4.setObjectName("toolButton_4")
 65         self.gridLayout_2.addWidget(self.toolButton_4, 2, 0, 1, 1)
 66         self.toolButton_5 = QtWidgets.QToolButton(self.tabWidgetPage1)
 67         icon4 = QtGui.QIcon()
 68         icon4.addPixmap(QtGui.QPixmap("../image/se/谷歌.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 69         self.toolButton_5.setIcon(icon4)
 70         self.toolButton_5.setIconSize(QtCore.QSize(80, 80))
 71         self.toolButton_5.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 72         self.toolButton_5.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 73         self.toolButton_5.setAutoRaise(True)
 74         self.toolButton_5.setObjectName("toolButton_5")
 75         self.gridLayout_2.addWidget(self.toolButton_5, 2, 1, 1, 1)
 76         self.toolButton_6 = QtWidgets.QToolButton(self.tabWidgetPage1)
 77         icon5 = QtGui.QIcon()
 78         icon5.addPixmap(QtGui.QPixmap("../image/se/yahoo.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 79         self.toolButton_6.setIcon(icon5)
 80         self.toolButton_6.setIconSize(QtCore.QSize(80, 80))
 81         self.toolButton_6.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 82         self.toolButton_6.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
 83         self.toolButton_6.setAutoRaise(True)
 84         self.toolButton_6.setObjectName("toolButton_6")
 85         self.gridLayout_2.addWidget(self.toolButton_6, 2, 2, 1, 1)
 86         icon6 = QtGui.QIcon()
 87         icon6.addPixmap(QtGui.QPixmap("../image/ico/China Flag.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 88         self.tabWidget.addTab(self.tabWidgetPage1, icon6, "")
 89         self.tabWidgetPage11 = QtWidgets.QWidget()
 90         self.tabWidgetPage11.setObjectName("tabWidgetPage11")
 91         self.gridLayout = QtWidgets.QGridLayout(self.tabWidgetPage11)
 92         self.gridLayout.setObjectName("gridLayout")
 93         self.toolButton_7 = QtWidgets.QToolButton(self.tabWidgetPage11)
 94         icon7 = QtGui.QIcon()
 95         icon7.addPixmap(QtGui.QPixmap("../image/v/tengxun.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 96         self.toolButton_7.setIcon(icon7)
 97         self.toolButton_7.setIconSize(QtCore.QSize(80, 80))
 98         self.toolButton_7.setPopupMode(QtWidgets.QToolButton.InstantPopup)
 99         self.toolButton_7.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
100         self.toolButton_7.setAutoRaise(True)
101         self.toolButton_7.setObjectName("toolButton_7")
102         self.gridLayout.addWidget(self.toolButton_7, 0, 0, 1, 1)
103         self.toolButton_8 = QtWidgets.QToolButton(self.tabWidgetPage11)
104         icon8 = QtGui.QIcon()
105         icon8.addPixmap(QtGui.QPixmap("../image/se/搜狐.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
106         self.toolButton_8.setIcon(icon8)
107         self.toolButton_8.setIconSize(QtCore.QSize(80, 80))
108         self.toolButton_8.setPopupMode(QtWidgets.QToolButton.InstantPopup)
109         self.toolButton_8.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
110         self.toolButton_8.setAutoRaise(True)
111         self.toolButton_8.setObjectName("toolButton_8")
112         self.gridLayout.addWidget(self.toolButton_8, 0, 1, 1, 1)
113         self.toolButton_9 = QtWidgets.QToolButton(self.tabWidgetPage11)
114         icon9 = QtGui.QIcon()
115         icon9.addPixmap(QtGui.QPixmap("../image/se/优酷.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
116         self.toolButton_9.setIcon(icon9)
117         self.toolButton_9.setIconSize(QtCore.QSize(80, 80))
118         self.toolButton_9.setPopupMode(QtWidgets.QToolButton.InstantPopup)
119         self.toolButton_9.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
120         self.toolButton_9.setAutoRaise(True)
121         self.toolButton_9.setObjectName("toolButton_9")
122         self.gridLayout.addWidget(self.toolButton_9, 0, 2, 1, 1)
123         self.toolButton_10 = QtWidgets.QToolButton(self.tabWidgetPage11)
124         icon10 = QtGui.QIcon()
125         icon10.addPixmap(QtGui.QPixmap("../image/se/bilibli.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
126         self.toolButton_10.setIcon(icon10)
127         self.toolButton_10.setIconSize(QtCore.QSize(80, 80))
128         self.toolButton_10.setPopupMode(QtWidgets.QToolButton.InstantPopup)
129         self.toolButton_10.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
130         self.toolButton_10.setAutoRaise(True)
131         self.toolButton_10.setObjectName("toolButton_10")
132         self.gridLayout.addWidget(self.toolButton_10, 1, 0, 1, 1)
133         self.toolButton_11 = QtWidgets.QToolButton(self.tabWidgetPage11)
134         icon11 = QtGui.QIcon()
135         icon11.addPixmap(QtGui.QPixmap("../image/se/土豆.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
136         self.toolButton_11.setIcon(icon11)
137         self.toolButton_11.setIconSize(QtCore.QSize(80, 80))
138         self.toolButton_11.setPopupMode(QtWidgets.QToolButton.InstantPopup)
139         self.toolButton_11.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
140         self.toolButton_11.setAutoRaise(True)
141         self.toolButton_11.setObjectName("toolButton_11")
142         self.gridLayout.addWidget(self.toolButton_11, 1, 1, 1, 1)
143         self.toolButton_12 = QtWidgets.QToolButton(self.tabWidgetPage11)
144         icon12 = QtGui.QIcon()
145         icon12.addPixmap(QtGui.QPixmap("../image/se/acfun.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
146         self.toolButton_12.setIcon(icon12)
147         self.toolButton_12.setIconSize(QtCore.QSize(80, 80))
148         self.toolButton_12.setPopupMode(QtWidgets.QToolButton.InstantPopup)
149         self.toolButton_12.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
150         self.toolButton_12.setAutoRaise(True)
151         self.toolButton_12.setObjectName("toolButton_12")
152         self.gridLayout.addWidget(self.toolButton_12, 1, 2, 1, 1)
153         icon13 = QtGui.QIcon()
154         icon13.addPixmap(QtGui.QPixmap("../image/ico/UK Flag.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
155         self.tabWidget.addTab(self.tabWidgetPage11, icon13, "")
156         self.verticalLayout.addWidget(self.tabWidget)
157
158         self.retranslateUi(Dialog)
159         self.tabWidget.setCurrentIndex(1)
160         QtCore.QMetaObject.connectSlotsByName(Dialog)
161
162     def retranslateUi(self, Dialog):
163         _translate = QtCore.QCoreApplication.translate
164         Dialog.setWindowTitle(_translate("Dialog", "toolButton+tabWidget控件"))
165         self.toolButton.setText(_translate("Dialog", "百度"))
166         self.toolButton_2.setText(_translate("Dialog", "360"))
167         self.toolButton_3.setText(_translate("Dialog", "必应"))
168         self.toolButton_4.setText(_translate("Dialog", "搜狗"))
169         self.toolButton_5.setText(_translate("Dialog", "谷歌"))
170         self.toolButton_6.setText(_translate("Dialog", "雅虎"))
171         self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabWidgetPage1), _translate("Dialog", "搜索引擎"))
172         self.toolButton_7.setText(_translate("Dialog", "腾讯视频"))
173         self.toolButton_8.setText(_translate("Dialog", "搜狐视频"))
174         self.toolButton_9.setText(_translate("Dialog", "优酷视频"))
175         self.toolButton_10.setText(_translate("Dialog", "Bilibili"))
176         self.toolButton_11.setText(_translate("Dialog", "土豆"))
177         self.toolButton_12.setText(_translate("Dialog", "AcFun"))
178         self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabWidgetPage11), _translate("Dialog", "视频网站"))
179
180
181 if __name__ == "__main__":
182     import sys
183     app = QtWidgets.QApplication(sys.argv)
184     Dialog = QtWidgets.QDialog()
185     ui = Ui_Dialog()
186     ui.setupUi(Dialog)
187     Dialog.show()
188     sys.exit(app.exec_())

ui界面代码

 1 # -*- coding: utf-8 -*-
 2 from PyQt5.QtCore import pyqtSlot
 3 from PyQt5.QtWidgets import QDialog, QApplication
 4 from Ui_toolBox import Ui_Dialog
 5 import sys, webbrowser
 6
 7
 8 class Dialog(QDialog, Ui_Dialog):
 9
10     def __init__(self, parent=None):
11         super(Dialog, self).__init__(parent)
12         self.setupUi(self)
13
14     @pyqtSlot()
15     def on_toolButton_clicked(self):
16         webbrowser.open(‘https://www.baidu.com‘)
17
18     @pyqtSlot()
19     def on_toolButton_2_clicked(self):
20         webbrowser.open(‘https://www.so.com/‘)
21
22     @pyqtSlot()
23     def on_toolButton_3_clicked(self):
24         webbrowser.open(‘http://cn.bing.com/‘)
25
26     @pyqtSlot()
27     def on_toolButton_4_clicked(self):
28         webbrowser.open(‘https://www.sogou.com/‘)
29
30     @pyqtSlot()
31     def on_toolButton_5_clicked(self):
32         webbrowser.open(‘https://www.google.com/‘)
33
34     @pyqtSlot()
35     def on_toolButton_6_clicked(self):
36         webbrowser.open(‘https://www.yahoo.com/‘)
37
38     @pyqtSlot()
39     def on_toolButton_7_clicked(self):
40         webbrowser.open(‘https://v.qq.com/‘)
41
42     @pyqtSlot()
43     def on_toolButton_8_clicked(self):
44         webbrowser.open(‘https://film.sohu.com‘)
45
46     @pyqtSlot()
47     def on_toolButton_9_clicked(self):
48         webbrowser.open(‘http://www.youku.com/‘)
49
50     @pyqtSlot()
51     def on_toolButton_10_clicked(self):
52         webbrowser.open(‘https://www.bilibili.com/‘)
53
54     @pyqtSlot()
55     def on_toolButton_11_clicked(self):
56         webbrowser.open(‘http://www.tudou.com/‘)
57
58     @pyqtSlot()
59     def on_toolButton_12_clicked(self):
60         webbrowser.open(‘http://www.acfun.cn/‘)
61
62
63 if __name__ == "__main__":
64     app = QApplication(sys.argv)
65     ui = Dialog()
66     ui.show()
67     sys.exit(app.exec_())
68
69     

逻辑界面

原文地址:https://www.cnblogs.com/XJT2018/p/10225640.html

时间: 2024-10-10 06:56:29

【PyQt5-Qt Designer】工具箱(QToolBox)控件的使用的相关文章

在Qt中使用ActiveX控件

Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件.ActiveQt包含了两个组件QAxContainer和QAxServer. l         QAxContainer允许我们使用COM对象,并且可以将将ActiveX控件嵌入到Qt程序中去. l         QAxServer可以将我们写的Qt控件导出为COM对象或者是ActiveX控件. 第一个例子我们来演示一下在Qt中

在网页中编辑报表的报表设计器Stimulsoft Reports Designer.Web报表控件

Stimulsoft Reports Designer.Web报表控件是一款网页报表设计器.您想在网页中编辑您的报表吗?现在是可能的! Stimulsoft Reports Designer.Web -是第一款使您可以完全在网页中编辑报表的报表设计器.在您的客户端机器里不需要安装.Net框架.ActiveX控件或其他特殊的插件.您只需要一个Web浏览器. Stimulsoft Reports Designer.Web是新式和便捷的接口并且功能丰富以及工作快速. 操作简单将报表编辑的支持添加到您的

Qt Gui中父控件监听子控件的IO事件

父对象重新定义自己继承自QObject的函数bool eventFilter(QObject* watched, QEvent* event). 子控件安装父对象的eventFilter: 例如, QTableView * itsView = new QTableView; itsView->viewport()->installEventFilter(this); Qt Gui中父控件监听子控件的IO事件

qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程

1.概述 QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己使用两个源文件也可以自己编译成库文件,非常方便. 官方网站:http://www.qcustomplot.com/ 1.0下载地址:http://download.csdn.net/detail/czyt1988/5986701 下面展示一下它的超强功能: 1.安装 使用QCustomPlot非常简

我写的一个 Qt 显示图片的控件

Qt 中没有专门显示图片的控件,通常我们会使用QLabel来显示图片.但是QLabel 显示图片的能力还是有点弱.比如不支持图像的缩放一类的功能,使用起来不是很方便.因此我就自己写了个简单的类. 我这个类支持三种图像显示模式,我分别称之为:FIXED_SIZE, CENTRED,AUTO_ZOOM, AUTO_SIZE. FIXED_SIZE 模式下,显示的图像大小等于图像尺寸乘以缩放因子,如果控件的尺寸小于这个大小则多出的部分被裁切掉. FIX_SIZE_CENTRED模式与FIXED_SIZ

《转》QT界面怎么使控件随窗口大小变化一直居中显示

使用QT开发界面时常遇到一些控件位置变动的问题,使用布局可以解决很多问题,比如设置居中显示. 工具/原料 QT开发工具 方法/步骤 首先我们在界面中添加一个QLabel控件. 在控件上边下边分别添加一个竖直的弹簧,选中这三个控件,然后点击竖直布局,如下图所示.布局结果如右图. 然后在上次布局的两侧添加水平的弹簧,选中两个弹簧和上次的布局,点击水平布局.布局效果如图 最后选中最外层的窗口,然后点击水平或竖直布局,进行整体布局 布局效果如下图,现在可以运行一下,然后拖动界面改变大小来试一下效果了.

topic8:Qt入门之常用控件认知之QDialog

对话框,顾名思义就是用于“对话”的交互窗口.其主要是体现人机交互的一个重要的方式和渠道.交互要达到实时性,其优先级也相对较高,所以一般对话框都是没有父窗口的顶级的窗口.如果对话框是父窗口的,对话框也一般显示在父窗口的中心位置. QDialog是Qt的所有对话框的基类.其主要实现与用户的实时信息或作操作的交互.根据对话框与其他是否处理顺序及输入时间的处理方式,对话框设置为模态或者非模态的.即是否会阻止本程序其他可见窗口的输入.其模式方式可以是应用级模式application,或者窗口window模

Qt系列03 常用控件

新建一个Qt Widget项目 我们可以看到项目下有四类文件: *.pro 项目配置文件 *.h C++头文件 *.cpp C++源文件 *.ui 界面设计文件 双击*.ui文件,QtCreator会自动进入界面设计模式 最左侧是QtCreator常用的一些功能,比如编辑,设计,Debug,项目,帮助等等. 左侧倒数第二竖列是各种控件,比如Layouts等等. 我们可以直接将各种控件拖入到中间的空白界面中. 下面,我们简单介绍这些控件 按钮组Buttons Buttons下面有6类按钮控件: P

Qt判断鼠标在控件上

QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝对位置进行换算,这里本文采用将鼠标绝对位置换算到控件上,示例代码如下: if(ui->groupBox->geometry().contains(this->mapFromGlobal(QCursor::pos()))) 原文地址:https://www.cnblogs.com/wangji