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个信号指定槽函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容