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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python按钮的响应事件详解
Mar 04 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
利用python进行数据加载
Jun 20 Python
Python面向对象编程之类的概念
Nov 01 Python
python百行代码实现汉服圈图片爬取
Nov 23 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应用技巧
2008/03/27 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Django密码系统实现过程详解
2019/07/19 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
印度服装购物网站:Limeroad
2018/09/26 全球购物
少先队学雷锋活动月总结
2014/03/09 职场文书
出纳担保书范文
2014/04/02 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
银行资信证明
2015/06/17 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
处理canvas绘制图片模糊问题
2022/05/11 Javascript