5 - PyQt5 控件介绍
1、什么是控件
一个程序界面上的各个独立的元素(表现为一块矩形区域),具备不同的功能,比如:用户点击、接收用户输入、展示内容、存放其他控件…
2、基础控件:
2.1 按钮
QPushButton:仅仅用来被点击。
QCommandLinkButton:加上详情。
QRadioButton:单选按钮,可选择某一单独菜单。
QCheckBox:复选框,可以同时选择多个。
2.2 输入控件
-
纯键盘输入
QLineEdit:单行输入框。
QTextEdit:多行输入框,不仅可以输入文本,还可以输入超链接、图片等富文本。
QPlainTextEdit:普通多行文本。
QKeySequenceEdit:采集快捷方式(快捷键)。
-
步长调节(QAbstractSpinBox) (键盘+鼠标)
QDateTimeEdit:采集日期时间。
QDateEdit:单独的日期。
QTimeEdit:单独的时间。
QSpinBox:输入整型数字。
QDoubleSpinBox:输入浮点型数字。
-
组合框(下拉选择输入)
QComboBox:常用于填地址。
QFontComboBox:Font 是字体的意思。
-
滑块(QAbstractSlider)(鼠标)
QDial:旋钮状的滑块。
QSlider:拖动式的滑块。
QScrollBar:滚动条(长文本常用)。
-
橡皮筋选中
QRubberBand:直接拉一个框来选中。
-
对话框(QDialog)
QColorDialog:选择颜色的对话框。
QFileDialog:选择文件的对话框。
QFontDialog:选择字体的详细设置的对话框。
QInputDialog:选择颜色的对话框。
-
日期
QCalendarWidget:输入日期,用于生日选择或买火车票。
2.3 展示控件
-
QLabel
普通文本(仅有展示作用,一般不可编辑)
数字
富文本(带格式的文本、超链接)
QLabel-超链接
图片
QLabel-动画(.gif)
-
QLCDNumber:像 LCD 灯一样。
-
QProgressBar:进度条。
-
对话框(QDialog)
QMessageBox:消息框。
QErrorMessage:错误对话框。
QProgressDialog:进程对话框。
3、高级控件:
3.1 容器控件(承载其他控件)
QToolBox:承载按钮,例如联系人列表。
QDialogButtonBox:承载对话框。
QGroupBox:把控件划分到组里面,一个组有一个边框,每组有个组头。
QMdiSubWindow:QMdiArea和QMdiSubWindow,右边可以放很多个小窗口。
3.2 结构控件
- QMainWindow:多个控件组合在一起,上面是菜单栏、工具栏,下面是状态栏。
相关控件:
QMenuBar:菜单栏。
菜单栏相关控件 QMenu:菜单。
QToolBar:工具栏。
工具栏相关控件QToolButton:工具按钮。
QStatusBar:工具栏。
-
QTabwidget:标签控件。
相关控件 QTabBar:
-
QStackedWidget:栈结构的界面,从一个开始一次切换。
-
QSplitter:分割窗口,各部分可调节大小 + 单独设置。
相关控件 QSplitterHandle:
-
QDockWidget:一部分可悬浮停靠在周围。
3.3 滚动控件
QAbstractScrollArea
-
QTextBrowser:文本浏览器(可滚动,可定位)
-
QScrollArea:滚动区域(展示非常大的图片)
-
QAbstractItemView:
QColumnView:列的视图(可以显示出两个列甚至多个列)
QHeaderView:表头视图(常与表格连用)
QListView:
QListWidget——展示列表元素
QUndoView——恢复(可撤销,也可重做)
QTableView:
相关控件:QTableWidget
QTreeView——QTreeWidget:
-
QMdiarea:
-
QGraphicsView:
3.4 辅助控件
-
QFocusFrame:获取焦点(有一个边框)
-
QSizeGrip:(拖动窗口时右下角有点点点)
-
QDesktopWidget:(快速获取桌面尺寸信息)
3.5 其他
-
向导/打印 (QDialog):常用于安装软件时向导页。
QWizard:
相关控件
相关控件:QWizardPage(只有一页)
QAbstractPrintDialog——QPrintDialog:打印对话框。
QPrintPreviewDialog:打印预览。
相关控件:QPrintPreviewWidget
QPageSetupDialog:页面设置
-
欢迎界面 QSplashScreen:应用在软件打开之前,加载时间太长可以播放一些动画。
-
功能性控件
QVideoWidget:展示视频,可以做播放器。
相关控件:QCameraViewfinder,相机
QWebEngineView:搜索引擎视图。
3、控件的继承
这部分大概介绍了 PyQt 有哪些控件、对应的类别、所能实现的功能效果。控件具有不同的功能,但也有相似之处,比如形状都是矩形,尺寸、位置都可以改。面向对象在设计整个框架的时候,把共同的特性(尺寸、位置)放在父类(基类)里面,子类具有自己的特性。先学父类,再学子类。
最基层的基类:QObject
可视化控件:QWidget 继承自 QObject。
其他子控件继承自 QWidget。
如何知道一个类有哪些子类呢?
def getSubClasses(cls):
for subcls in cls.__subclasses__():
print(subcls)
if len(subcls.__subclasses__()) > 0:
getSubClasses(subcls)
getSubClasses(QAbstractButton)
小技巧:想打印某个类的所有直接子类,直接 QAbstractButton.__subclasses__().print 后面回车,就可以自动补全成 print(QAbstractButton.__subclasses__()) 的形式。
课程笔记整理于网课。
作话:每天其实都有在听课,但想把一个完整的部分整理好再发博客,所以就不每天发博文了。