1. 什么是控件
- 一个程序界面上的独立元素,一块矩形区域
- 具备不同的功能,比如:用户点击,接收用户输入,展示内容,存放其它控件等
2. 常用控件
2.1 按钮
- QPushButton ,普通按钮
- QCommandLinkButton , 超链接按钮
- QRadioButton, 单选按钮
- QCheckBox, 多选按钮
2.2 输入控件
2.2.1 纯键盘输入
- QLineEdit,单行输入
- QTextEdit,多行输入(普通文本,超链接,图片)
- QPlainTextEdit, 普通文本
- QKeySequenceEdit, 采集快捷键
2.2.2 步长调节(QAbstractSpinBox)(键盘+鼠标)
下面的按件可以手动输入或用鼠标增量调节
- QDateTimeEdit,采集日期和时间的
- QDateEdit , 单独的日期
- QTimeEdit, 单独的时间
- QSpinBox,输入整数
- QDoubleSpinBox, 输入小数
2.2.3 组合框(下拉选择输入)
- QComboBox, 下拉列表选择输入
- QFontComboBox , 字体列表
2.2.4 滑块(QAbstractSlider)
用鼠标拖动
- QDial, 圆钮旋转
- QSlider, 滑块
- QScrollBar,滚动条
2.2.5 橡皮筯选中
- QRubberBand, 就是一个框选
2.2.6 对话框(QDialog)
- QColorDialog, 颜色对话框
- QFileDialog, 文件对话框
- QFontDialog, 字体对话框
- QInputDialog, 输入对话框
2.2.7 日期
- QCalendarWidget , 日期选择
2.3 展示控件
- QLabel ,可以展示普通文本,数字,富文本(字体,字号,颜色,超链接等),图片,GIF动画
- QLCDNumber, 类似LCD的数字显示屏
- QProgressBar,进度条
- 对话框(QDialog)
- QMessageBox,弹出一个小窗口(警告,错误等)
- QErrorMessage,错误对话框(比如程序异常弹出的窗口,显示一些堆栈信息)
- QProgressDialog,进度对话框
2.4 窗口控件
- QToolBox,类似老式QQ列表
- QDialogButtonBox,一个窗口,里面有ok, close, cancel / yes, no, Abort
- QGroupBox, 分组,一个矩形框左上角有一个标签,里面可以放其它控件。
- QMdiSubWindow , 子窗口
- QMdiArea
- QMdiSubWindow
2.5 结构控件
- QMainWindow, 主窗口,可以放菜单栏,工具栏,状态栏等
- 相当控件
- QMenuBar 菜单栏
- QMenu, 菜单
- QToolBar 工具栏
- QToolButton 工具按钮
- QStatusBar 状态栏
- QTabwidget, 标签按钮,就是有好多选项卡,可以选择的
- QTabBar 标签(选项卡)
- QStackedWidget,包含多个窗口,可以轮循各个窗口(类似栈)
- QSplitter, 分割窗口
- QDockWidget, 可以停放到上下左右位置,也可以浮动。
2.6 滚动控件(QAbstractScrollArea)
- QTextBrowser, 文本浏览
- QScrollArea, 滚动区域 ,比如图片太大,出现滚动条
- QAbstractItemView
- QColumnView, 多列
- QHeaderView, 表头
- QListView (列表)
- QListWidget 列表
- QUndoView 撤销与重做
- QTableView, 表格
- QTableWidget
- QTreeView, 树结构
- QTreeWidget
- QMdiarea 子控件
- QGraphicsView 用于画图
2.7 辅助控件
- QFocusFrame 焦点控件
- QSizeGrip 调整大小的一个控件
- QDesktopWidget, 桌面控件,访问桌面的一些信息
2.8 其它控件
2.8.1 向导/打印
- QWizard 向导(比如:安装软件)
- QWizardPage 单独的一页
- QAbstractPrintDialog 打印
- QPrintDialog
- QPrintPreviewDialog 打印预览
- QPrintPreviewWidget
- QPageSetupDialog 页面设置
2.8.2 欢迎界面
- QSplashScreen 软件打开之前的界面
2.8.3 功能性控件
- QVideoWidget 放视频
- QCameraViewFinder 相机
- QWebEngineView 浏览器
3. 类继承
不同的控件都有相同点(共性),可以抽取出来放到父类里。比如:名字,矩形区域,位置,大小,设置样式等。
对于不同点由不同的子类单独实现,比如:展示,输入,交互,容器,框架等
继承关系:QObject -> QWidget -> (各类控件) ,每类控件里有具体控件。
可以用函数打印一下继承关系:
def trace_inherit(obj, level=0):
for sub in obj.__subclasses__():
class_name = re.findall(r'\b\w+\b', str(sub))[-1]
print(f"{' ' * level}-> {class_name}")
if len(sub.__subclasses__()) > 0:
trace_inherit(sub, level=level + 1)
比如打印可视化控件基类QWidget获取的继承结构如下:
-> QAbstractButton
-> QCheckBox
-> QPushButton
-> QCommandLinkButton
-> QRadioButton
-> QToolButton
-> QFrame
-> QAbstractScrollArea
-> QAbstractItemView
-> QColumnView
-> QHeaderView
-> QListView
-> QListWidget
-> QUndoView
-> QHelpIndexWidget
-> QTableView
-> QTableWidget
-> QTreeView
-> QTreeWidget
-> QHelpContentWidget
-> QGraphicsView
-> QMdiArea
-> QPlainTextEdit
-> QScrollArea
-> QTextEdit
-> QTextBrowser
-> QLCDNumber
-> QLabel
-> QSplitter
-> QStackedWidget
-> QToolBox
-> QAbstractSlider
-> QDial
-> QScrollBar
-> QSlider
-> QAbstractSpinBox
-> QDateTimeEdit
-> QDateEdit
-> QTimeEdit
-> QDoubleSpinBox
-> QSpinBox
-> QCalendarWidget
-> QDialog
-> QColorDialog
-> QErrorMessage
-> QFileDialog
-> QFontDialog
-> QInputDialog
-> QMessageBox
-> QProgressDialog
-> QWizard
-> QAbstractPrintDialog
-> QPrintDialog
-> QPageSetupDialog
-> QPrintPreviewDialog
-> QComboBox
-> QFontComboBox
-> QDesktopWidget
-> QDialogButtonBox
-> QDockWidget
-> QFocusFrame
-> QGroupBox
-> QKeySequenceEdit
-> QLineEdit
-> QMainWindow
-> QMdiSubWindow
-> QMenu
-> QMenuBar
-> QOpenGLWidget
-> QProgressBar
-> QRubberBand
-> QSizeGrip
-> QSplashScreen
-> QSplitterHandle
-> QStatusBar
-> QTabBar
-> QTabWidget
-> QToolBar
-> QWizardPage
-> QSvgWidget
-> QQuickWidget
-> QPrintPreviewWidget
-> QGLWidget
-> QVideoWidget
-> QCameraViewfinder
-> QHelpFilterSettingsWidget
-> QHelpSearchQueryWidget
-> QHelpSearchResultWidget
-> QDesignerActionEditorInterface
-> QDesignerFormWindowInterface
-> QDesignerObjectInspectorInterface
-> QDesignerPropertyEditorInterface
-> QDesignerWidgetBoxInterface
-> QAxWidget
查看某一个类的父类链:
def trace_super(obj):
box = []
for name in obj.__mro__:
print(name)
class_name = re.findall(r'\'(.*)\'', str(name))[-1]
box.append(class_name)
box.reverse()
print(" <- ".join(box))
结果:
object <- sip.simplewrapper <- PyQt5.QtGui.QPaintDevice <- sip.wrapper <- PyQt5.QtCore.QObject <- PyQt5.QtWidgets.QWidget <- PyQt5.QtWidgets.QAbstractButton <- PyQt5.QtWidgets.QPushButton
标签:控件,name,对话框,PyQt5,按钮,2.2,输入
From: https://www.cnblogs.com/three-sheep/p/17288824.html