zetcode教程 汉化版:

https://maicss.gitbook.io/pyqt5-chinese-tutoral/

官方网站:

https://www.riverbankcomputing.com/static/Docs/PyQt5/introduction.html

QT使用手册:

https://doc.qt.io/archives/qtjambi-4.5.2_01/com/trolltech/qt/gui/QComboBox.html

学习策略

1、明确需求

工作时是项目驱动,明确需求后,在网上查找相关资源,一步步累加功能。最好先搭建一个框架,之后就是在此框架上添加各种功能。

安装

pip install pyqt5
# qt5的图形界面工具,如qtdesinger
pip install pyqt5-tools

布局管理

Qt Designer中,工具箱的最上方有4种布局,分别是垂直布局、水平布局、栅格布局和表单布局。

实现布局有2种方式,通过 布局管理器 与 容器控件。

一个工程用界面通常由以下部分组成:

菜单栏

工具栏

左侧

常用控件

Qt中将表格、简单列表、树状列表称为"表项视图类" item view class;

有两种实现方式:

Item Views(Model-Based),以view结尾,如QListView等;

Item Widgets(Item-Based),以widget结尾,如QListWidget等;

区别:

1、Views 是 Widgets 类的父类;

2、Views是MVC架构的一种简化;Widgets将数据、展示、控制合在一起;实际上Widgets在Views基础上绑定了一个默认的存储数据并提供了相关方法。

QPalette调色板

# 设置背景颜色 或 背景图片
palette1 = QtGui.QPalette(self)
palette1.setColor(self.backgroundRole(), QColor(192,253,123)) # 设置背景颜色
palette1.setBrush(self.backgroundRole(), QtGui.QBrush(QtGui.QPixmap('../../../Document/images/17_big.jpg'))) # 设置背景图片 self.setPalette(palette1)
self.setAutoFillBackground(True) # 不设置也可以 # self.setWindowTitle('Icon') # 设置窗体标题
# self.setWindowIcon(QtGui.QIcon('../../../Document/images/firefox.png')) # 设置窗体ICON

Qbutton

button.setText("haah") # 改变文本
button.setEnabled(True) # 使能与禁用

QLineEdit 单行文本

只能单行编辑的文本框

edit.text() # 获取文本
edit.setText("haha") # 设置文本
edit.clear() # 清除所有文本 edit.setPlaceholderText('请在这里输入URL') # 设置默认提示文字 

QPlainTextEdit 多行文本

edit.toPlainText() # 获取文本
edit.setPlainText("haha") # 设置文本
edit.appendPlainText("haha") # 在末尾添加文本
edit.clear() # 清除所有文本 edit.setPlaceholderText('请在这里输入URL') # 设置默认提示文字 

QComboBox 组合框

method = cbox.currentText() # 当前 选中的选项 的文本
cbox.clear() # 清空选项
cbox.addItems(['by1','by2','by3'])

QSpinBox 数字输入框

number = box.value() # 返回的是整数对象
box.setValue(100)

信号returnPressed: 按下回车键

passwordEdit.returnPressed.connect(onLogin)

QAction

用于菜单栏、工具栏或自定义快捷键的抽象动作行为。

Pyqt 中__init__(self,parent==None) parent理解

参考:

在PyQt中,所有class都是从QObject派生而来,QWidget对象就可以有一个parent。这种parent-child关系主要用于两个方面:

  • 没有parent的QWidget类被认为是最上层的窗体(通常是MainWindow),由于MainWindow的一些操作生成的新窗体对象,parent都应该指向MainWindow。

    由于parent-child关系的存在,它保证了child窗体在主窗体被回收之时也被回收。
  • parent作为构造函数的最后一个参数被传入,但通常情况下不必显示去指定parent对象。因为当调用局管理器时,部局管理器会自动处理这种parent-child关系。但是在一些特殊的情况下,我们必须显示的指定parent-child关系。如当生成的子类不是QWidget对象但继承了QObject对象,用作dock widgets的QWidget对象。

QTreeWidget

官方链接:https://doc.qt.io/archives/qtjambi-4.5.2_01/com/trolltech/qt/gui/QTreeWidget.html

第一手材料,需要了解大概,知道怎么用。

QTreeWidgetItem:想要编辑时需要在代码中添加

child2.setFlags(child2.flags()| Qt.ItemIsEditable) ;

且在Qt Designer中做相关操作;

Qt Designer中可以做的操作

1、editTriggers:DoubleClicked;

2、selectionMode:ExtendedSelection;

3、drapEnabled:

drapDropMode:DragDrop;

defaultDropAction:CopyAction;

PYQT5 学习的更多相关文章

  1. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  2. Pyqt5学习笔记(一)

    Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...

  3. Pyqt5学习系列

    最近在学习Pyqt5做界面,找到了一个非常棒的博主的学习系列 在此记录下来: http://blog.csdn.net/zhulove86/article/category/6381941

  4. PyQt5学习笔记----标准文件打开保存框QFileDialog

    单个文件打开 QFileDialog.getOpenFileName()多个文件打开 QFileDialog.getOpenFileNames() 文件夹选取     QFileDialog.getE ...

  5. PYQT5学习笔记之各模块介绍

    Qtwidgets模块包含创造经典桌面风格的用户界面提供了一套UI元素的类 Qtwidegts下还有以下常用对象,所以一般使用Qtwidegts时会使用面向对象式编程 QApplication: ap ...

  6. PyQt5学习笔记14----初识pyqt多线程操作

    转载:翻滚吧挨踢男 首先来看一个例子: # coding=utf-8 __author__ = 'a359680405' from PyQt5.QtCore import * from PyQt5.Q ...

  7. Python pyQt4/PyQt5 学习笔记4(事件和信号)

    信号 & 槽 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget,QLCDNumber,QS ...

  8. Python pyQt4/PyQt5 学习笔记3(绝对对位,盒布局,网格布局)

    本节研究布局管理的内容. (一)绝对对位  import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__( ...

  9. Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)

    例子:状态栏.菜单栏和工具栏 import sys from PyQt4 import QtGui class Example(QtGui.QMainWindow): def __init__(sel ...

  10. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

随机推荐

  1. MPI学习笔记(三):矩阵相乘的分块并行(行列划分法)

    mpi矩阵乘法:C=αAB+βC 一.主从模式的行列划分并行法 1.实现方法 将可用于计算的进程数comm_sz分解为a*b,然后将矩阵A全体行划分为a个部分,将矩阵B全体列划分为b个部分,从而将整个 ...

  2. 如何在 C# 程序中注入恶意 DLL?

    一:背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的? 其实简而言之就是线程的远程注入,这一篇就展开说一下. ...

  3. mybatis_config xml配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  4. Kubernetes 中部署 NFS-Subdir-External-Provisioner 为 NFS 提供动态分配卷

    文章转载自:http://www.mydlq.club/article/109/ 系统环境: 操作系统: CentOS 7.9 Docker 版本: 19.03.13 Kubernetes 版本: 1 ...

  5. Elasticsearch:Index生命周期管理入门

    如果您要处理时间序列数据,则不想将所有内容连续转储到单个索引中. 取而代之的是,您可以定期将数据滚动到新索引,以防止数据过大而又缓慢又昂贵. 随着索引的老化和查询频率的降低,您可能会将其转移到价格较低 ...

  6. 单台主机MySQL多实例部署

    二进制安装mysql-5.7.26 [root@mysql ~]# cd /server/tools/ [root@mysql tools]# ll total 629756 -rw-r--r-- 1 ...

  7. 7.prometheus监控多个MySQL实例

    mysqld_exporter集中部署 集中部署,就是说我们将所有的mysqld_exporter部署在同一台服务器上,在这台服务器上对mysqld_exporter进行统一的管理,下面介绍一下集中部 ...

  8. ELK基于ElastAlert实现日志的微信报警 ---docker环境

    参考网址:https://github.com/anjia0532/elastalert-docker 1.拉取镜像: docker pull anjia0532/elastalert-docker: ...

  9. Java Maven项目之Nexus私服搭建和版本管理应用

    转载自:https://cloud.tencent.com/developer/article/1010603 1.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓 ...

  10. Javascript 手写 LRU 算法

    LRU 是 Least Recently Used 的缩写,即最近最少使用.作为一种经典的缓存策略,它的基本思想是长期不被使用的数据,在未来被用到的几率也不大,所以当新的数据进来时我们可以优先把这些数 ...