虽然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提供了三种调色板,分别是:
这三个调色板除了排列方式有所不同外,其他的使用方法都一样,都接受颜色列表参数,或预置的几个颜色族,都支持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各个原生组件运用的理解。
文章版权所有:州的先生博客,转载必须保留出处及原文链接
原文地址:https://zmister.com/archives/1594.html
以上就是Python QT组件库qtwidgets的使用的详细内容,更多关于Python qtwidgets库的资料请关注小牛知识库其它相关文章!
我目前正在为一家公司构建一个Vue UI组件库,在这个过程中,我使用webpack作为默认绑定程序。我想把整个项目构建成一个npm包,然后可以通过一个私有的git包存储库分发。包分发已经启动并运行,但我似乎无法以正确的方式导出组件,以便在另一个项目中使用。 使用的不同工具的版本: 国家预防机制:6.14.4 节点:12.17.0 纱线:1.22.0 @VUE/CLI:4.4.1 TSC:3.9.5
Apache Tapestry 5.4 即将发布,它将完美支持Jquery,我个人偏好 Jquery EasyUI,于是开发出基于 Tapestry 5.4版本的 Jquery EasyUI 组件库,Jquery EasyUI 的日历不方便使用,集成了 My97DatePicker 日历组件。附加其它的组件,后续会加上其它实用控件。 tapestry 组件库: 1、现有组件有: a、EasyUI组
eZ Components 是一个企业快速级,常用组件库。
本文向大家介绍delphi使用Chilkat 组件和库从SFTP下载文件的方法,包括了delphi使用Chilkat 组件和库从SFTP下载文件的方法的使用技巧和注意事项,需要的朋友参考一下 官网地址:https://www.example-code.com/delphiDll/default.asp 实例代码:(不包括全局解锁) 密码生成器:https://www.cnblogs.com/hhm
开源组件 1. Angular 1)文件上传:ng-file-upload 、ng-file-upload-shim 2)请求加载动画:angular-loading-bar 3)滚动加载:ngInfiniteScroll 4)表单验证:angular-messages 2. Vue 3. React 4. 动画库 5. 其他 HammerJSMobile手势 1)富文本:summernote 公
所有官方提供的组件库均已进行协程化处理,可安全地在 Hyperf 内或其它协程框架内使用,基于 Hyperf 的开放性和可扩展性,社区可对此开发或适配各种各样的组件,得益于此,Hyperf 将存在着无限的可能性。 本页将收录各个适配了 Hyperf 的协程组件 和 已经经过验证可安全地用于协程下的常用库,以便您快速的从中选择合适的组件完成您的需求。 组件顺序以收录时间排序 如何提交我的组件? 如果