少造轮子!推荐一个Qt的Python组件库

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

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

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

下面咱们一块儿来看看它的效果。
ide

安装

直接使用 pip 工具进行安装便可,命令以下:工具

  
  
   
   
            
   
   
  1. ui

pip install qtwidgets

密码输入框

在PyQt5和PySide2中,咱们通常使用QLineEdit()小部件,经过设置它的EchoMode属性来让输入的文本显示星号而非明文,代码以下所示:spa

  
  
   
   
            
   
   
  1. .net


  2. 设计

  3. 3d






# encoding:utf-8from PySide2 import QtWidgetsimport sysclass 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 QtWidgetsfrom qtwidgets import PasswordEditimport sysclass 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 QtWidgetsfrom qtwidgets import PasswordEdit,Gradientimport sysclass 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 QtWidgetsfrom qtwidgets import PasswordEdit,Gradient,PaletteGrid,PaletteHorizontal,PaletteVerticalimport sysclass 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各个原生组件运用的理解。


🧐分享、点赞、在看,给个三连击呗!👇

本文分享自微信公众号 - 州的先生(zmister2016)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索