Python QT組件庫qtwidgets的使用
雖然Qt提供了不少現(xiàn)成的組件,但是在Python中使用PyQt5或PySide2進行圖形界面程序開發(fā)的過程,還是免不了要根據自己的需求組合一些小部件以形成新的自定義組件。
最近州的先生在寫一個桌面圖形界面的登錄密碼框的過程中,發(fā)現(xiàn)了這樣一個小巧的自定義組件庫。
其目前提供了密碼輸入框組件、漸變組件、均衡器組件、調色板組件。
安裝
直接使用 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()
運行后的效果如下所示:
在現(xiàn)代的登錄界面中,默認輸入密碼為密文,然后通過一個按鈕允許用戶查看自己輸入的密碼,是一個很常見的功能。
如果我們要基于QLineEdit()組件來擴展的話,就得花很多時間和代碼來實現(xiàn)。借助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()提供了方便的界面來設計應用程序中的線性漸變。只需創(chuàng)建對象的實例即可創(chuàng)建新的漸變器。
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()
默認的漸變顏色是從黑到白的。停止點使用一個紅色框進行標記。漸變器組件創(chuàng)建之后,我們可以在圖形界面上進行編輯:
- 在漸變器上雙擊可以添加標記點,其顏色與右邊的顏色一致;
- 拖動標記點,可以改變漸變色的范圍和位置;
- 右鍵單擊新建的標記點,可以編輯標記點的顏色;
- 雙擊新建的標記點,可以刪除此標記點。
下面,我們來演示一下:
調色板
qtwidgets提供了三種調色板,分別是:
- 水平調色板PaletteHorizontal
- 垂直調色板PaletteVertical
- 網格調色板PaletteGrid
這三個調色板除了排列方式有所不同外,其他的使用方法都一樣,都接受顏色列表參數(shù),或預置的幾個顏色族,都支持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()
其運行效果為:
最后
還有一個均衡器組件,用于動態(tài)可視化輸出頻率的變化,在這里就不演示了,有興趣的小伙伴可以自己試一試。
除此之外,所有這些組件也都是基于Qt現(xiàn)有組件進行的封裝,學有余力的小伙伴還可以查看一下它們的源碼實現(xiàn),以加深對Qt各個原生組件運用的理解。
文章版權所有:州的先生博客,轉載必須保留出處及原文鏈接
以上就是Python QT組件庫qtwidgets的使用的詳細內容,更多關于Python qtwidgets庫的資料請關注腳本之家其它相關文章!
- python-地圖可視化組件folium的操作
- wxPython窗體拆分布局基礎組件
- wxPython實現(xiàn)文本框基礎組件
- python tkinter組件使用詳解
- python tkinter組件擺放方式詳解
- 對Python中TKinter模塊中的Label組件實例詳解
- Python wxPython庫Core組件BoxSizer用法示例
- Python:Scrapy框架中Item Pipeline組件使用詳解
- Python調用C# Com dll組件實戰(zhàn)教程
- Python MySQL數(shù)據庫連接池組件pymysqlpool詳解
- 使用Python的Django框架中的壓縮組件Django Compressor
- 零基礎寫python爬蟲之使用urllib2組件抓取網頁內容
- python drf各類組件的用法和作用
相關文章
Python數(shù)據合并的concat函數(shù)與merge函數(shù)詳解
大家都知道concat()函數(shù)可以沿著一條軸將多個對象進行堆疊,其使用方式類似數(shù)據庫中的數(shù)據表合并,在使用merge()函數(shù)進行合并時,默認會使用重疊的列索引做為合并鍵,即取行索引重疊的部分,本文給大家介紹python?數(shù)據合并concat函數(shù)與merge函數(shù),感興趣的朋友一起看看吧2022-05-05