PyQt5控件

一、窗口控件

  • 如果是主窗口,用QmainWindow类;
  • 如果是对话框,就用Qdialog类;
  • 如果不确定,或者可能是顶层窗口,也可能嵌入其他窗口,那就用Qwidget类。

另外,注意QWidget、QMainWindow、QDialog和QFrame的区别,特别是QWidget和QFrame的区别
PyQt中所有的类都继承于QObject类。QWidget直接继承于QPaintDevice类,QDialog、QMainWindow、QFrame直接继承QWidget 类。QWidget类是所有用户界面对象的基类。 QDialog类是对话框窗口的基类。QFrame类是有框架的窗口部件的基类,比如:QPushButton,QLabel… ---> QFrame ---> QWidget。本文中符号“---> ”表示“继承于”的意思。

详细区别请看:
QWidget、QMainWindow、QDialog和QFrame的区别
QFrame与QWidget的区别
QFrame类使用总结

(一) QmainWindow:主窗口类

通常用于创建主窗口,它继承自Qwidget类,拥有它的所派生方法和属性。

(二) QWidget:控件类

它是所有用户界面对象的基类,所有的窗口和控件都直接或间接继承自QWidget类。

1、QLabel:标签类

  • 可用于显示不可编辑的文本和图片,也可以放置一个GIF动画,还可以用于提示标记为其他控件。纯文本、链接、富文本可显示的标签上。
  • 继承关系:
    QLabel ---> QFrame ---> QWidget

2、文本框类控件:QLineEdit、QTextEdit

① QLineEdit : 单行文本框控件

用于输入单行字符串。

② QTextEdit : 多行文本框控件

可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条。还可显示HTML文档。

3、 按钮类控件 : QAbstractButton、QPushButton、QRadioButton、QCheckBox

① QAbstractButton : 按钮基类

是按钮的基类,QPushButton、QRadioButton、QCheckBox均继承于 QAbstractButton,它是抽象类,不能实例化。

②QPushButton : 命令按钮

是长方形,通过单击该按钮或用快捷键来执行一些命令,该命令通常通过文本来描述执行的动作。

③ QRadioButton : 单选按钮

  • 提供一组可供选择的按钮和文本标签,用户可选择其中一选项,标签用于显示对应的文本信息。它是一种形状按钮,可以切换为on或off,即checked和unchecked。
  • toggled信号是在切换单选钮状态时发射的,而clicked信号则在每次点击时都会发射,所以toggled信号更适合用于状态监控,绑定这个信号,在按钮状态改变时,触发相应行为。

④ QCheckBox : 复选框按钮

  • 提供了一组带文本标签的复选框,用户怕树叶子打破头选择多个选项。
  • 它被选中或取消选中,都会发射一个stateChaged信号,如果想在它状态改变时触发相应的行为,请连接这个信号。

4、QComboBox : 下拉列表框

是一个集按钮和下拉选项于一体的控件。

5、QSpinBox : 计数器

  • 是一个计数器控件,允许用户选择一个整数值,通过单击向上/向下按钮或按键盘上的上/下箭头来增加/减少当前显示的值,也可以输入值。
  • 继承关系:QSpinBox 、QDoubleSpinBox ---> QAbstractSpinBox。QSpinBox用于数理整数值,QDoubleSpinBox用于处理浮点值。
  • 可用valueChanged信号连接槽,可通过value()函数获得计数器的当前值。

6、QSlider : 滑动条

  • 提供一个垂直或水平的滑动条,是用于控制有界值的典型控件,它允许用户在某一范围内移动滑块,并将滑块所在的位置置换成一个合法范围内的整数值。

7、窗口绘图类控件:QPainter、QPen、QBrush、QPixmap

① QPainter : 绘制点、文字

  • 在QWidget控件上执行绘图操作,可以绘制简单的直线到复杂的饼图,执行较低级别的图形绘制功能。

② QPen : 钢笔

  • 用于绘制直线、曲线、或给轮廓画出矩形、椭圆形、多边形及其他形状等

③ QBrush : 画刷

  • 用于填充如矩形、椭圆形或多边形等形状。

④ QPixmap : 图像显示

  • 用于绘图设备的图像显示,它可以作为一个QPaintDevice对象,也可以加载到一个控件中,通常是标签或按钮,用于在标签或按钮上显示图像。

8、拖曳与剪贴板:Drag、Drop、QClipboard

① DragEnterEvent、DropEvent : 拖曳

基于MIME类型的拖曳数据传输是基于QDrag类的。QMimeData对象将关联的数据与其对应的MIME类型相关联。互联网上的每一种资源都属于一种MIME类型的数据。

② QClipboard : 剪贴板

  • 提供了对系统剪贴板的访问,可以在应用程序之间复制和粘贴数据

9、QCalendar :日历控件

提供一个基于月份的视图,通话用户通过鼠标或键盘选择日期,默认选中的是今天的日期。也可以对日历的日期范围进行规定。

10、QDateTimeEdit :日期时间控件

  • 是一个允许用户编辑日期时间的控件,可以使用键盘和上、下箭头按钮来增加或减少日期时间值。
  • 继承关系:QDateEdit、QTimeEdit ---> QDateTimeEdit ---> QAbstractSpinBox ---> QWidget
  • 信号和槽函数: QDateTimeEdit 常用的信号是dateChanger、dateTimeChanged、timeChanged,分别在改变日期、日期时间、时间时发射。

11、菜单栏 :QMenuBar

12、工具栏 :QToolBar

13、状态栏 :QStatusBar

MainWindow对象在底部保留有一个水平条,作为状态栏,用于显示永久或临时的状态信息。

(三) Qdialog:对话框窗口类

继承关系:QMessageBox、QFileDialog、QFontDialog、QInputDialog --->Qdialog

1、QMessageBox : 消息弹出式对话框

  • 用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。

2、QInputDialog : 输入对话框

  • 由一个文本框和两个按钮(OK和Cancel)组成,当用户单击ok按钮后或按enter键后,父窗口可以收集通过QInputDialog控件输入的信息。

3、QFontDialog : 字体选择对话框

  • 可以让用户选择所显示文本的字号大小、样式和格式。

4、QFileDialog : 打开保存文件对话框

  • 用于打开和保存文件的标准对话框。

二、布局控件

  • PyQt5中有4种布局方式:水平布局、垂直布局、网格布局、表单布局
  • PyQt5中有2种布局方法:addLayout()、addWidget()

(一)QBoxLayout :框布局

继承关系:QHBoxLayout、QVBoxLayout ---> QBoxLayout ---> QLayout ---> QObject

1、QHBoxLayout :水平布局

按照从左到右的顺序来添加控件

2、QVBoxLayout :垂直布局

按照从上到下的顺序来添加控件

(二)QGridLayout :网格布局

  • 将窗口分隔成行和列的网格来进行排列。

(三)QFormLayout :表单布局

  • 继承关系: QFormLayout ---> QLayout ---> QObject
  • 实现表单式的布局,由两列组成,第一列用于显示信息,给用户提示,一般叫label域;第二列需要用户进行选择或输入,一般叫field域。 。

(四)QSplitter

  • 可以动态地拖动子控件之间的边界来控制子控件的大小,是一个动态布局管理器

三、高级界面控件

(一)表格与树:QTableView、QListView、QListWidget、QTableWidget、QTreeView

1、QTableView

  • 继承关系:QTableWidget ---> QTableView ---> QAbstractItemView ---> QAbstractScrollArea ---> QFrame ---> QWidget
  • QTableView控件可以绑定一个模型数据用来更新控件上的内容

2、QListView

  • 继承关系:QListWidget ---> QListView
  • QListWidget 是 QListView的子类,是升级版本的QListView。
  • QListView类用于展示数据

3、QListWidget

  • 是一个基于条目的接口,用于从列表中添加或删除条目。每一个条目对象都是QListWidgetItem对象。

4、QTableWidget

  • 是Qt程序中常用的显示数据表格的空间
  • 继承关系:QTableWidget ---> QTableView

5、QTreeView

  • 继承关系:QTreeWidget ---> QTreeView ---> QAbstractItemView ---> QAbstractScrollArea ---> QFrame ---> QWidget
  • QTreeView类实现树形结构,树形结构是通过QTreeWidgetQ和TreeWidgetItem类实现的,其中TreeWidgetItem类实现树形节点的添加。

(二)容器:装载更多的控件

  • 用于解决一个窗口装载不下或装载太多控件而不美观的问题。

1、QTabWidget:选项卡控件

  • 提供一个选项卡和一个页面区域,默认显示第一个选项卡

2、QStackedWidget:堆栈窗口控件

  • 是一个堆栈窗口控件,可以填充一些小控件,但同一时间只有一个小控件可以显示。QStackedWidget使用使用QStackedLayout布局。

3、QDockWidget

  • 是一个可以停靠在QMainWindow内的窗口控件,它可以保持浮动状态或者在指定位置作为子窗口附加到主窗口中。

4、多文档界面:QMdiArea

  • QMdiArea控件占据在主窗口的中央位置,子窗口在这个区域是QMdiSubWindow类的实例。

5、QScrollBar

  • 提供水平或垂直的滚动条,这样可以扩大当前窗口的有效装载面积,从而装载更多的控件。

(三)多线程

1、QTimer:定时器

  • 提供重复的和音效的定时器。
  • 一般将timeout信号连接到相应的槽。

1、QThread

  • 是Qt线程类中最核心的底层类,要使用QThread开始一个线程,可以创建它的一个子类,然后覆盖其QThread.run()函数。
  • PyQt的线程使用方法:建立一个自定义的类,使它继承QThread,并实现其run()方法即可。
  • QThread有started和finished信号,可以为这2个信号指定槽函数。



链接:https://www.jianshu.com/p/afb1a778d232
 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值