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连接SQLServer2000的方法详解
Apr 19 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
python抽取指定url页面的title方法
May 11 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
python中scikit-learn机器代码实例
Aug 05 Python
python 检查是否为中文字符串的方法
Dec 28 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
python 实时调取摄像头的示例代码
Nov 25 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php var_export与var_dump 输出的不同
2013/08/09 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
javascript天然的迭代器
2010/10/29 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python实现身份证号码解析
2015/09/01 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
电子商务应届生求职信
2013/11/16 职场文书
企划专员岗位职责
2013/12/09 职场文书
部队党性分析材料
2014/02/16 职场文书
法律专业自荐信
2014/06/03 职场文书
文明城市创建标语
2014/06/16 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
升职感谢信
2015/01/22 职场文书
监理中标通知书
2015/04/16 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android