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

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

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

安装

直接使用 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()

运行后的效果如下所示:

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

如果我们要基于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提供的密码输入框的效果:

除了密码输入框,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()

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

在渐变器上双击可以添加标记点,其颜色与右边的颜色一致;

拖动标记点,可以改变渐变色的范围和位置;

右键单击新建的标记点,可以编辑标记点的颜色;

双击新建的标记点,可以删除此标记点。

下面,我们来演示一下:

调色板

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()

其运行效果为:

最后

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

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

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

pythonqt库_Python QT组件库qtwidgets的使用相关推荐

  1. python qt 拖拽组件使用方法_Python QT组件库qtwidgets的使用

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

  2. Qt文档阅读笔记-Qt跨平台库(Qt基本库)

    Qt基本库是所有Qt平台的基础分.他能在所有支持开发的平台和测试平台上跑.这些库在Qt5中已经保持源代码和二进制的兼容. 基本模块(基本库)被其他特殊模块所附加. 下面是Qt基本模块(基本库)的列表: ...

  3. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】

    Vue常用的组件库大全[前端工程师必备] (一)移动端 常用组件库 1)Vant ui 2)Cube UI 3)VUX 4) NuTUI 5)Mint ui 6)Varlet UI 7)OnsenUI ...

  4. vue组件库介绍以及组件库Element UI 的使用

    组件库 前言 这篇文章介绍vue组件库! 介绍什么是组件库以及Element UI组件库的使用! 看完不会你打我.哈哈哈,开玩笑的,不多说,上刺刀!! 1. 什么是 vue 组件库 在实际开发中,前端 ...

  5. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACSS.BEM.SMACSS.ITCSS 等,其中 SMACSS 和 ITCSS 很相似.我在企业级项目中最常使用的是简化版 ...

  6. 产品经理、交互设计师必备的超赞Web端Axure原型设计组件库、元件库、图表组件库

    本组件库是一套通用型的中后台信息系统原型方案,可以快速扩展并输出标准美观的中后台产品原型,极大的提升输出效率和节省协作成本.方案中提供了几套不同风格和结构的系统框架,并涵盖了大量的常用组件和通用页面模 ...

  7. Vue cli3 库模式搭建组件库并发布到 npm

    三.规划目录结构 1.创建项目 在指定目录中使用命令创建一个默认的项目,或者根据自己需要自己选择. $ vue create . 2.调整目录 我们需要一个目录存放组件,一个目录存放示例,按照以下方式 ...

  8. linux环境QT做静态库,QT静态库的创建与使用

    最近研究一下静态库的开发: 最初学习的资料是: QT静态库的创建与使用(全网最细)_路漫漫其远,吾求索的博客-CSDN博客_qt生成静态库 建立一个静态库成功. 我这里总结一下: 1,如果同时打开静态 ...

  9. 新手适合用什么Vue组件库?TinyVue组件库好用吗?

    对于刚接触前端领域的同学,绕不开选择组件库的问题, 常见的 Vue组件库如下: Vuetify 组件库.一个纯手工精心打造的 Material 样式的组件库.文档全,但是纯英文的官网还是会让一些同学望 ...

最新文章

  1. 被放养导致申博论文难产,该不该硬gang导师?
  2. 2020年人工神经网络第二次作业-参考答案第二题
  3. (转载)Linux下pthread_once()函数
  4. html输入框颜色属性,css 修改input输入框属性
  5. 网络里找不到工作组的计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
  6. Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
  7. Android 弹出 Toast 时取消上一个 Toast(完美方案)增加同步
  8. 人机交互,加速机器人拟人化
  9. ubuntu 开源镜像_Ubuntu手机可能对开源意味着什么
  10. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)
  11. 让孩子从小自信的28个方法
  12. 华为抓取错误日志在哪里_分析Spider抓取情况和SEO优化
  13. ASP.NET MVC 4 tutorial
  14. otdr测试波形修改软件,AQ7932(OTDR仿真分析软件)
  15. 从Kaminario谈谈“三大”存储热点技术
  16. 组建了计算机教室和图书室,【不忘初心 牢记使命】武胜这8所试点学校陆续展开课后服务工作...
  17. 执行python manage.py celery -A HttpRunnerManager worker --loglevel=info 报错问题集锦
  18. 动软DBUtility类库DbHelperSQLP实现多数据库连接
  19. 腾讯云服务器利用镜像部署WordPress个人网站
  20. 业务员如何听懂采购要吃回扣的暗语或者动作?

热门文章

  1. java数据类型(整型、浮点型、char类型、boolean型、类型转换)
  2. ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍
  3. JQuery: 实现筛选功能
  4. 51单片机之串口通讯应用实例(逻辑分析仪调试)
  5. MySQL / 索引模型
  6. libuv / 编译 libuv 1.30 过程说明(静态库)
  7. 启明云端WT516P6Core离线语音模块发布后,开发者朋友提出的问题最多的是:是否可以自己编译指令
  8. oracle jdedward,Oracle JDEdwards EnterpriseOne Tools任意文件上传漏洞(CVE-2011-2317)
  9. 正式发布!中国首个LF Edge捐赠项目Baetyl 2.2发布
  10. linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)