您好,登錄后才能下訂單哦!
小編給大家分享一下Python中PyQt5基本控件怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
控件也稱控件對(duì)象,是 Qt用戶界面上最基本的組件類型,也是構(gòu)成用戶界面的基本結(jié)構(gòu)。用戶界面上顯示的所有內(nèi)容都是控件,例如按鈕、標(biāo)簽、文本框,又如菜單欄、工具欄、狀態(tài)欄,甚至整個(gè)窗口本身也是控件。
QWidget 類是 PyQt5 的基類,也是所有控件的父類。所有的 Qt 控件都是 QWidget 類的子類,因此都繼承了 QWidget 類的特性,可以接收用戶的輸入事件,如鼠標(biāo)和鍵盤輸入,并可以在用戶界面上顯示控件內(nèi)容,還可以存放其它控件。
控件具有屬性。不同類型的控件具有部分相同的屬性,也具有一些不同的專有屬性。
控件的相同屬性包括:名字,形狀,位置,大小,設(shè)置格式??丶膶S脤傩园ǎ赫故緝?nèi)容,接受輸入,用戶交互,日期,框架,等等。
所有的 Qt 控件都是 QWidget 類的子類,繼承了 QWidget 類的屬性。因此,我們學(xué)習(xí)控件可以按類進(jìn)行學(xué)習(xí),先學(xué)習(xí)其繼承的父類的通用屬性,再學(xué)習(xí)控件所特有的專有屬性。對(duì)于控件的學(xué)習(xí)就是一個(gè)類的繼承關(guān)系的結(jié)構(gòu)圖。
我們以圖形界面 uiDemo5.ui 為例,介紹控件的通用屬性,并對(duì)控件的屬性進(jìn)行編輯修改。
如前所述,QtDesigner 右側(cè)上方的 “對(duì)象查看器” 顯示了界面中的控件名稱和結(jié)構(gòu),下方的 “屬性編輯器” 顯示了選中的控件對(duì)象的各種屬性。在圖形界面中選擇某個(gè)控件,或者在 “對(duì)象查看器” 中選擇某個(gè)控件,在"屬性編輯器" 就會(huì)顯示該控件對(duì)象的屬性。
不論是窗口對(duì)象 MainWindow、菜單欄 menubar、工具欄 toolBar,還是按鈕 pushButton、編輯行 lineEdit,都有一些相同的屬性,例如:
objectName
:控件名,非常重要。準(zhǔn)確的說(shuō)是控件的 ID,Python 程序中訪問(wèn)控件、控件交互都是使用 objectName。所有控件都必須具有唯一的 objectName,不能重名。不能使用中文字符。
geometry
:控件的大小和位置。
控件的寬度和高度可以修改,對(duì)于 MainWindow 來(lái)說(shuō)控件的寬度/高度就是圖形界面程序窗口的寬度/高度。
控件位置 (X, Y) 是控件在窗口控件的坐標(biāo)值,MainWindow 的控件位置不能修改,其它控件的位置 (X, Y) 可以根據(jù)需要修改。
minimumSize、maximumSize 是主窗口大小拉伸后,控件對(duì)象的最小尺寸、最大尺寸。
font
:控件顯示的字體選擇,包括字體、字號(hào)、風(fēng)格、效果等選項(xiàng)。
要了解 QtWidgets 類的子類,可以使用 “subclasses()” 將所有的子類打印出來(lái),共有約 30個(gè)子類。
import PyQt5 print(QtWidgets.QWidget.__subclasses__())
這些控件類型,總體上可以分類如下:
按鈕:QPushButton(按鍵按鈕),QToolButton(工具按鈕),QRadioButton(單選框),QCheckButton(多選框),QCommandLinkButton(連接命令的按鈕)
鍵盤輸入控件:QlineEdit(單行輸入),QTextEdit(多行輸入),QPlainTextEdit(普通多行輸入),QkeySequenceEdit(快捷鍵輸入)
調(diào)節(jié)輸入控件:QAbstractSpinBox(步長(zhǎng)調(diào)節(jié)輸入),QDateEdit(日期輸入),QTimeEdit(時(shí)間輸入),QDateTimeEdit(日期和時(shí)間輸入)
數(shù)字調(diào)節(jié)框控件:QSpinBox(整型數(shù)字調(diào)節(jié)框),QDoubleSpinBox(浮點(diǎn)數(shù)字調(diào)節(jié)框)
滑動(dòng)輸入控件:QDial(旋轉(zhuǎn)拖滑輸入),QSlider(直線拖動(dòng)輸入),QScrollBar(滾動(dòng)條),QRubberBand(橡皮筋拖拽)
下拉輸入控件:QComboBox(組合框下拉選項(xiàng)),QSlider(直線拖動(dòng)輸入),QScrollBar(滾動(dòng)條),QRubberBand(橡皮筋拖拽)
對(duì)話框輸入控件:QDialog(對(duì)話框),QColorDialog(顏色對(duì)話框),QFileDialog(文件對(duì)話框),QFontDialog(字體對(duì)話框),QInputDialog(輸入對(duì)話框)
日歷控件:QCalendarWidget(日期選擇部件)
內(nèi)容顯示控件:QLabel(顯示框),QLCDNumber(液晶顯示器),QProgressBar(進(jìn)度條)
對(duì)話框顯示控件:QMessageBox(信息提示框),QErrorMessage(錯(cuò)誤提示框),QProgressDialog(進(jìn)度提示框)
容器控件:QToolBox,QDialogButtonBox,QGroupBox,QMdiSubWindow
結(jié)構(gòu)控件:QMainWindow,QTabwidget,QStackedWidget,QSplitter,QDockWidget
滾動(dòng)控件:QTextBrowser,QScrollArea,QAbstractItemView,QMdiarea,QGraphicsView
輔助控件:QFocusFrame,QSizeGrip,QDesktopWidget
其它控件
在 QtDesigner 左側(cè)的 “WidgetBox” 工具欄中,將常用的控件按類別進(jìn)行分組。用鼠標(biāo)將工具欄中的控件圖標(biāo)拖拽到 QtDesigner 中間的圖形界面編輯窗口,就在圖像界面創(chuàng)建了一個(gè)所選擇的控件。
按鈕是最常用的控件類型。
在 QtDesigner 左側(cè)的 “WidgetBox” 工具欄中的"Buttons" 組,設(shè)有多種不同類型的按鈕控件:PushButton(按鍵按鈕),QToolButton(工具按鈕),QRadioButton(單選框),QCheckButton(多選框),QCommandLinkButton(連接命令的按鈕)。QDialogButtonBox(標(biāo)準(zhǔn)按鈕盒)提供一系列標(biāo)準(zhǔn)按鈕,相當(dāng)于按鈕控件的組合。
按鈕控件的常用屬性:
text
:顯示文本
icon
:設(shè)置圖標(biāo)
iconSize
:圖標(biāo)大小
shortcut
:設(shè)置快捷鍵
checkable
:設(shè)置是否自動(dòng)切換按鈕
checked
:設(shè)置默認(rèn)選中狀態(tài)
autoRepeat
:設(shè)置是否會(huì)在用戶按下時(shí)自動(dòng)重復(fù)
autoExclusive
:設(shè)置是否啟用自動(dòng)排他性(設(shè)置多選框)
按鈕控件的信號(hào)觸發(fā)條件:
clicked()
:當(dāng)按鈕被第一次按下然后釋放時(shí)發(fā)出信號(hào)
clicked(bool)
:當(dāng)按鈕被第一次按下然后釋放時(shí)發(fā)出信號(hào),并將當(dāng)前狀態(tài)傳遞給外界
pressed()
:當(dāng)鼠標(biāo)光標(biāo)在按鈕內(nèi)時(shí),按下鼠標(biāo)左鍵發(fā)出信號(hào)
released()
:當(dāng)釋放鼠標(biāo)左鍵時(shí)發(fā)出信號(hào)
toggled(bool)
:按鈕的狀態(tài)發(fā)生變化時(shí)發(fā)出信號(hào),并將當(dāng)前狀態(tài)傳遞給外界
按鈕控件常用的的模式/狀態(tài):
可用或不可用,禁用時(shí)按鈕變灰
標(biāo)準(zhǔn)按鈕,開(kāi)關(guān)按鈕或菜單按鈕
打開(kāi)或關(guān)閉(僅用于開(kāi)關(guān)按鈕)
默認(rèn)狀態(tài)或正常狀態(tài)
是否自動(dòng)重復(fù)
是否處于按下?tīng)顟B(tài)
用鼠標(biāo)將工具欄中的按鈕控件拖拽到 QtDesigner 中間的圖形界面編輯窗口,就在圖像界面創(chuàng)建了一個(gè)按鈕控件。如下圖所示,我們?cè)趫D形界面 uiDemo5.ui 的左側(cè),創(chuàng)建了幾種不同的按鈕控件。
QPushButton(按鍵按鈕)是最常用的按鈕,按下(或者單擊)按鈕可以執(zhí)行某個(gè)操作或回答問(wèn)題,例如:確定,應(yīng)用,取消,關(guān)閉,是,否和幫助。
按鈕控件通常顯示一個(gè)文本標(biāo)簽(text),可以為按鈕選擇一個(gè)圖標(biāo)(icon),還可以選擇設(shè)置快捷鍵(shortcut)。
按鍵按鈕的上述屬性,都可以在 “屬性編輯器” 中相應(yīng)的屬性行中進(jìn)行編輯修改。
當(dāng)按鍵按鈕被鼠標(biāo)或快捷鍵激活時(shí),按鈕會(huì)發(fā)出 clicked() 信號(hào),可以通過(guò)連接槽函數(shù)來(lái)觸發(fā)特定的操作。
QToolButton
(工具按鈕)常用于工具欄, 通常在創(chuàng)建 QAction 實(shí)例時(shí)創(chuàng)建。工具按鈕通常顯示一個(gè)圖標(biāo),可以快速訪問(wèn)特定的命令或選項(xiàng)。
QRadioButton
(單選框)是一個(gè)帶有文本標(biāo)簽的單選框,可以打開(kāi)(選中)或關(guān)閉(未選中)。單選框被選中或者清除時(shí),都會(huì)發(fā)出 “toggled()” 信號(hào),可以通過(guò)連接槽函數(shù)來(lái)觸發(fā)特定的操作。
QCheckButton
(多選框)是一個(gè)帶有文本標(biāo)簽的復(fù)選框,除了可以打開(kāi)(選中)或關(guān)閉(未選中),還提供了半選狀態(tài)(可選項(xiàng))。復(fù)選框被選中或者清除時(shí),都會(huì)發(fā)射 “stateChanged()” 信號(hào),可以通過(guò)連接槽函數(shù)來(lái)觸發(fā)特定的操作。
單選框定義了“多選一”的選擇,而復(fù)選框提供的是“多選多”的選擇。
QCommandLinkButton
(連接命令的按鈕)外觀像一個(gè)扁平化的 QPushButton,并且自帶了一個(gè)向右的圖標(biāo),其用途類似于類似于單選按鈕,用于一組互斥選項(xiàng)之間進(jìn)行選擇。
QDialogButtonBox
(標(biāo)準(zhǔn)按鈕盒)提供一系列標(biāo)準(zhǔn)按鈕,可以水平或垂直布置,常用于對(duì)話框和消息框。 Qt 定義的標(biāo)準(zhǔn)按鈕包括:Yes、No、OK、Cancel、Ignore、Open、Save、Close、Apply、Help 等等,用戶可以自定義添加。
在 QtDesigner 左側(cè)的 “WidgetBox” 工具欄中的"Input Widget" 組,設(shè)有多種不同類型的輸入控件,例如:
文本輸入控件:QlineEdit(單行輸入)、QTextEdit(多行輸入)、QPlainTextEdit(普通多行輸入);
數(shù)字輸入控件:QSpinBox(整型數(shù)據(jù)輸入)、QDoubleSpinBox(浮點(diǎn)數(shù)據(jù)輸入);
調(diào)節(jié)輸入控件:QAbstractSpinBox(步長(zhǎng)調(diào)節(jié)輸入)、QDateEdit(日期輸入)、QTimeEdit(時(shí)間輸入)、QDateTimeEdit(日期和時(shí)間輸入)。
用鼠標(biāo)將工具欄中的輸入控件拖拽到 QtDesigner 中間的圖形界面編輯窗口,就在圖像界面創(chuàng)建了一個(gè)按鈕控件。如前圖所示,我們?cè)趫D形界面 uiDemo5.ui 的中間和右側(cè),創(chuàng)建了幾種不同的輸入控件。
單行文本輸入框(QlineEdit)
QLineEdit 控件是一個(gè)單行文本編輯器, 允許用戶輸入和編輯單行文本,并支持撤消、重做、剪切、粘貼及拖放功能。
QLineEdit 控件的屬性、信號(hào)、函數(shù)較多,并支持密碼輸入方式、文本框自動(dòng)補(bǔ)全,在次不作詳細(xì)介紹,有興趣的讀者可以查看相關(guān)文檔和例程。
多行文本輸入框(QTextEdit)
QTextEdit 控件是一個(gè) “所見(jiàn)即所得” 的多行富文本編輯器, 允許用戶輸入和編輯多行文本,并支持HTML4 標(biāo)簽子集,可以加載純文本和富文本的文件,適用于編輯和瀏覽大型的富文本文件。
QTextEdit適用于段落和字符。可以顯示圖像,列表和表格。如果文本太大而無(wú)法在文本編輯的視口中查看,則會(huì)出現(xiàn)滾動(dòng)條。
TextEdit不僅可以顯示文本,還可以顯示HTML文檔
普通多行輸入(QPlainTextEdit)
QPlainTextEdit 控件是一個(gè)多行的純文本編輯器,允許用戶輸入和編輯多行純文本,不支持表格或嵌入幀。針對(duì)純文本的處理進(jìn)行了優(yōu)化,可以處理更大的文檔和更快速的響應(yīng)。
步長(zhǎng)調(diào)節(jié)輸入(QAbstractSpinBox)
QAbstractSpinBox 將所有步長(zhǎng)調(diào)節(jié)器的通用的功能抽象出了一個(gè)父類,也可以直接實(shí)例化使用。QAbstractSpinBox包含了一個(gè)QLineEdit和兩個(gè)QPushbutton,數(shù)據(jù)的更改可以通過(guò)點(diǎn)擊按鈕或使用鍵盤輸入。
日期和時(shí)間輸入(QDateEdit/QTimeEdit/QDateTimeEdit)
QDateEdit 控件用于編輯日期,QTimeEdit 控件用于編輯時(shí)間,QDateTimeEdit同時(shí)編輯日期時(shí)間的控件。可以使用鍵盤上的上下鍵頭按鈕來(lái)增加或減少日期、時(shí)間。
整型數(shù)字調(diào)節(jié)框(QSpinBox)
QSpinBox 是一個(gè)計(jì)數(shù)器控件,允許用戶選擇一個(gè)整數(shù)通過(guò)上下按鍵遞增或者遞減,也可以直接輸入整數(shù)的數(shù)值。默認(rèn)取值范圍為 0-99,每次調(diào)節(jié)的步長(zhǎng)為 1。
浮點(diǎn)數(shù)字調(diào)節(jié)框(QDoubleSpinBox)
QDoubleSpinBox 是浮點(diǎn)數(shù)據(jù)計(jì)數(shù)器控件,用于處理浮點(diǎn)數(shù)值。默認(rèn)精度為 2位小數(shù)。-
在 QtDesigner 將設(shè)計(jì)的圖形界面保存為 uiDemo5.ui,運(yùn)行 PyUIC 將選中的 .ui 文件轉(zhuǎn)換為 .py 文件,在該路徑生成 uiDemo5.py 文件。
我們編寫一個(gè)主程序調(diào)用設(shè)計(jì)的圖形界面 uiDemo5.py,就可以完成一個(gè)圖形界面應(yīng)用程序。
# GUIdemo5.py # Demo5 of GUI by PyQt5 # Copyright 2021 youcans, XUPT # Crated:2021-10-12 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox from uiDemo5 import Ui_MainWindow # 導(dǎo)入 uiDemo5.py 中的 Ui_MainWindow 界面類 class MyMainWindow(QMainWindow, Ui_MainWindow): # 繼承 QMainWindow 類和 Ui_MainWindow 界面類 def __init__(self, parent=None): super(MyMainWindow, self).__init__(parent) # 初始化父類 self.setupUi(self) # 繼承 Ui_MainWindow 界面類 def trigger_actHelp(self): # 動(dòng)作 actHelp 觸發(fā) QMessageBox.about(self, "About", """數(shù)字圖像處理工具箱 v1.0\nCopyright YouCans, XUPT 2021""") return if __name__ == '__main__': app = QApplication(sys.argv) # 在 QApplication 方法中使用,創(chuàng)建應(yīng)用程序?qū)ο? myWin = MyMainWindow() # 實(shí)例化 MyMainWindow 類,創(chuàng)建主窗口 myWin.show() # 在桌面顯示控件 myWin sys.exit(app.exec_()) # 結(jié)束進(jìn)程,退出程序
由于本文主要介紹常用的基本控件,在程序中尚未將控件的信號(hào)連接槽函數(shù),因此運(yùn)行程序 uiDemo5.py 時(shí),其中的一些按鈕控件在點(diǎn)擊后并沒(méi)有觸發(fā)操作。
以上是“Python中PyQt5基本控件怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。