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 + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
Python字符串详细介绍
May 09 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
python Tkinter的图片刷新实例
Jun 14 Python
python开头的coding设置方法
Aug 08 Python
python分布式编程实现过程解析
Nov 08 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
超级实用的8个Python列表技巧
Aug 24 Python
Python引入多个模块及包的概念过程解析
Sep 21 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
Smarty模板快速入门
2007/01/04 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
会计岗位职责
2013/11/08 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
起诉书格式范文
2015/05/20 职场文书
婚礼父母致辞
2015/07/28 职场文书
三八妇女节致辞
2015/07/31 职场文书
周一问候语大全
2015/11/10 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python