Python QT组件库qtwidgets的使用


Posted in Python onNovember 02, 2020

虽然Qt提供了不少现成的组件,但是在Python中使用PyQt5或PySide2进行图形界面程序开发的过程,还是免不了要根据自己的需求组合一些小部件以形成新的自定义组件。

最近州的先生在写一个桌面图形界面的登录密码框的过程中,发现了这样一个小巧的自定义组件库。

其目前提供了密码输入框组件、渐变组件、均衡器组件、调色板组件。

Python QT组件库qtwidgets的使用

安装

直接使用 pip 工具进行安装即可,命令如下:

pip install qtwidgets

密码输入框

在PyQt5和PySide2中,我们一般使用QLineEdit()小部件,通过设置它的EchoMode属性来让输入的文本显示星号而非明文,代码如下所示:

# encoding:utf-8

from PySide2 import QtWidgets
import sys


class Widget(QtWidgets.QWidget):
 def __init__(self):
  super().__init__()
  self.setWindowTitle("州的先生-zmister.com")
  self.pwd_input = QtWidgets.QLineEdit(self)
  self.pwd_input.setEchoMode(QtWidgets.QLineEdit.Password)


def main():
 app = QtWidgets.QApplication(sys.argv)
 gui = Widget()
 gui.show()
 sys.exit(app.exec_())

if __name__ == '__main__':
 main()

运行后的效果如下所示:

Python QT组件库qtwidgets的使用

在现代的登录界面中,默认输入密码为密文,然后通过一个按钮允许用户查看自己输入的密码,是一个很常见的功能。

如果我们要基于QLineEdit()组件来扩展的话,就得花很多时间和代码来实现。借助qtwidgets模块,咱们就可以少造一点轮子了。

from PySide2 import QtWidgets
from qtwidgets import PasswordEdit
import sys


class Widget(QtWidgets.QMainWindow):
 def __init__(self):
  super().__init__()
  self.setWindowTitle("州的先生-zmister.com")
  # self.pwd_input = QtWidgets.QLineEdit(self)
  self.pwd_input = PasswordEdit()
  self.setCentralWidget(self.pwd_input)


def main():
 app = QtWidgets.QApplication(sys.argv)
 gui = Widget()
 gui.show()
 sys.exit(app.exec_())

if __name__ == '__main__':
 main()

来看看使用qtwidgets提供的密码输入框的效果:

Python QT组件库qtwidgets的使用

除了密码输入框,qtwidgets还提供了几个扩展的组件。

渐变组件

渐变组件Gradient()提供了方便的界面来设计应用程序中的线性渐变。只需创建对象的实例即可创建新的渐变器。

from PySide2 import QtWidgets
from qtwidgets import PasswordEdit,Gradient
import sys


class Widget(QtWidgets.QMainWindow):
 def __init__(self):
  super().__init__()
  self.setWindowTitle("州的先生-zmister.com")
  self.gradient = Gradient()
  self.setCentralWidget(self.gradient)


def main():
 app = QtWidgets.QApplication(sys.argv)
 gui = Widget()
 gui.show()
 sys.exit(app.exec_())

if __name__ == '__main__':
 main()

Python QT组件库qtwidgets的使用

默认的渐变颜色是从黑到白的。停止点使用一个红色框进行标记。渐变器组件创建之后,我们可以在图形界面上进行编辑:

  • 在渐变器上双击可以添加标记点,其颜色与右边的颜色一致;
  • 拖动标记点,可以改变渐变色的范围和位置;
  • 右键单击新建的标记点,可以编辑标记点的颜色;
  • 双击新建的标记点,可以删除此标记点。

下面,我们来演示一下:

Python QT组件库qtwidgets的使用

调色板

qtwidgets提供了三种调色板,分别是:

  • 水平调色板PaletteHorizontal
  • 垂直调色板PaletteVertical
  • 网格调色板PaletteGrid

这三个调色板除了排列方式有所不同外,其他的使用方法都一样,都接受颜色列表参数,或预置的几个颜色族,都支持selected选择信号,下面我们来演示一下:

from PySide2 import QtWidgets
from qtwidgets import PasswordEdit,Gradient,PaletteGrid,PaletteHorizontal,PaletteVertical
import sys


class Widget(QtWidgets.QMainWindow):
 def __init__(self):
  super().__init__()
  self.setWindowTitle("州的先生-zmister.com")
  self.palette_1 = PaletteGrid('category10')
  self.palette_2 = PaletteHorizontal('17undertones')
  self.palette_3 = PaletteVertical(['#000003', '#160B39', '#410967', '#6A176E', '#932567', '#BA3655', '#DC5039', '#F2751A', '#FBA40A', '#F6D542', '#FCFEA4'])
  self.palette_1.selected.connect(self.selected_color)
  self.label = QtWidgets.QLabel("点击了:")
  self.widget = QtWidgets.QWidget()
  self.widget_layout = QtWidgets.QVBoxLayout()
  self.widget.setLayout(self.widget_layout)
  self.widget_layout.addWidget(self.palette_1)
  self.widget_layout.addWidget(self.palette_2)
  self.widget_layout.addWidget(self.palette_3)
  self.widget_layout.addWidget(self.label)
  self.setCentralWidget(self.widget)

 def selected_color(self,value):
  self.label.setText("点击了:{}".format(value))

def main():
 app = QtWidgets.QApplication(sys.argv)
 gui = Widget()
 gui.show()
 sys.exit(app.exec_())

if __name__ == '__main__':
 main()

其运行效果为:

Python QT组件库qtwidgets的使用

最后

还有一个均衡器组件,用于动态可视化输出频率的变化,在这里就不演示了,有兴趣的小伙伴可以自己试一试。

Python QT组件库qtwidgets的使用

除此之外,所有这些组件也都是基于Qt现有组件进行的封装,学有余力的小伙伴还可以查看一下它们的源码实现,以加深对Qt各个原生组件运用的理解。

  文章版权所有:州的先生博客,转载必须保留出处及原文链接

  原文地址:https://zmister.com/archives/1594.html

以上就是Python QT组件库qtwidgets的使用的详细内容,更多关于Python qtwidgets库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Opencv实现抠图背景图替换功能
May 21 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
Python API len函数操作过程解析
Mar 05 Python
django admin 添加自定义链接方式
Mar 11 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
python如何保存文本文件
Jun 07 Python
python利用opencv保存、播放视频
Nov 02 #Python
python获得命令行输入的参数的两种方式
Nov 02 #Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 #Python
python获取命令行参数实例方法讲解
Nov 02 #Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 #Python
详解tensorflow之过拟合问题实战
Nov 01 #Python
python cookie反爬处理的实现
Nov 01 #Python
You might like
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
PHP7新功能总结
2019/04/14 PHP
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
js实现右键菜单功能
2016/11/28 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
Python对文件操作知识汇总
2016/05/15 Python
python实现分页效果
2017/10/25 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python如何解除一个装饰器
2020/08/07 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
PHP面试题及答案一
2012/06/18 面试题
高中生期末评语
2014/01/28 职场文书
代办委托书怎样写
2014/04/08 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
质量保证书
2015/01/17 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书