- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境搭建
- PyQt - Hello World
- PyQt - 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號與槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和已繫結訊號
- PyQt - 使用 PyQtSignal 建立新訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控制元件
- PyQt - 基本控制元件
- PyQt - QLabel 控制元件
- PyQt - QLineEdit 控制元件
- PyQt - QPushButton 控制元件
- PyQt - QRadioButton 控制元件
- PyQt - QCheckBox 控制元件
- PyQt - QComboBox 控制元件
- PyQt - QSpinBox 控制元件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控制元件
- PyQt - QFontComboBox 控制元件
- PyQt - QDoubleSpinBox 控制元件
- PyQt - QToolBox 控制元件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放操作
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫處理
- PyQt 基礎知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt - QLineEdit 控制元件
QLineEdit 物件是最常用的輸入欄位。它提供一個框,可以在其中輸入一行文字。為了輸入多行文字,需要QTextEdit 物件。
什麼是 QlineEdit 控制元件
PyQt 的 QLineEdit 控制元件是 GUI 應用程式中的一個重要元件,主要用於單行文字輸入。它在資料輸入表單中非常常用,並且可以與其他 PyQt 控制元件(例如 QLabel)無縫整合,建立互動式且使用者友好的介面。
建立 QLineEdit 控制元件
要建立 QLineEdit 控制元件,請按照以下步驟操作:
步驟 1:匯入 QLineEdit - 從 PyQt6.QtWidgets 模組匯入 QLineEdit 類。
from PyQt6.QtWidgets import QLineEdit
步驟 2:例項化 - 建立 QLineEdit 類的新的例項。這可以透過各種引數來完成。
- 無引數:建立空的 QLineEdit。
- 帶父控制元件:指定 QLineEdit 的父控制元件。
- 帶預設字串值:為 QLineEdit 設定初始文字。
line_edit = QLineEdit('Default Value', parent_widget)
下表列出了 QLineEdit 類的一些重要方法:
以下是 QLineEdit 最常用的方法。
| 序號 | 方法及描述 |
|---|---|
| 1 |
setAlignment() 根據對齊常量對齊文字 Qt.AlignLeft Qt.AlignRight Qt.AlignCenter Qt.AlignJustify |
| 2 |
clear() 清除內容 |
| 3 |
setEchoMode() 控制框內文字的外觀。回顯模式值如下: QLineEdit.Normal QLineEdit.NoEcho QLineEdit.Password QLineEdit.PasswordEchoOnEdit |
| 4 |
setMaxLength() 設定輸入字元的最大數量 |
| 5 |
setReadOnly() 使文字框不可編輯 |
| 6 |
setText() 以程式設計方式設定文字 |
| 7 |
text() 檢索欄位中的文字 |
| 8 |
setValidator() 設定驗證規則。可用的驗證器有 QIntValidator - 將輸入限制為整數 QDoubleValidator - 數字的小數部分限制為指定的小數位數 QRegexpValidator - 根據正則表示式檢查輸入 |
| 9 |
setInputMask() 應用字元組合的掩碼進行輸入 |
| 10 |
setFont() 顯示 QFont 物件的內容 |
QLineEdit 物件發出以下訊號:
以下是訊號最常用的方法。
| 序號 | 方法及描述 |
|---|---|
| 1 |
cursorPositionChanged() 每當游標移動時 |
| 2 |
editingFinished() 當您按下“Enter”鍵或欄位失去焦點時 |
| 3 |
returnPressed() 當您按下“Enter”鍵時 |
| 4 |
selectionChanged() 每當選中文字發生變化時 |
| 5 |
textChanged() 當框中的文字透過輸入或以程式設計方式更改時 |
| 6 |
textEdited() 每當文字被編輯時 |
示例
此示例中的 QLineEdit 物件演示了某些方法的使用。
第一個欄位e1使用自定義字型顯示文字,右對齊並允許整數輸入。第二個欄位將輸入限制為小數點後兩位的數字。第三個欄位應用了用於輸入電話號碼的輸入掩碼。欄位e4上的 textChanged() 訊號連線到 textchanged() 槽方法。
欄位e5的內容以密碼形式回顯,因為其 EchoMode 屬性設定為 Password。其 editingFinished() 訊號連線到 presenter() 方法。因此,一旦使用者按下 Enter 鍵,該函式將被執行。欄位e6顯示預設文字,由於設定為只讀,因此無法編輯。
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def window():
app = QApplication(sys.argv)
win = QWidget()
e1 = QLineEdit()
e1.setValidator(QIntValidator())
e1.setMaxLength(4)
e1.setAlignment(Qt.AlignRight)
e1.setFont(QFont("Arial",20))
e2 = QLineEdit()
e2.setValidator(QDoubleValidator(0.99,99.99,2))
flo = QFormLayout()
flo.addRow("integer validator", e1)
flo.addRow("Double validator",e2)
e3 = QLineEdit()
e3.setInputMask('+99_9999_999999')
flo.addRow("Input Mask",e3)
e4 = QLineEdit()
e4.textChanged.connect(textchanged)
flo.addRow("Text changed",e4)
e5 = QLineEdit()
e5.setEchoMode(QLineEdit.Password)
flo.addRow("Password",e5)
e6 = QLineEdit("Hello Python")
e6.setReadOnly(True)
flo.addRow("Read Only",e6)
e5.editingFinished.connect(enterPress)
win.setLayout(flo)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec_())
def textchanged(text):
print "contents of text box: "+text
def enterPress():
print "edited"
if __name__ == '__main__':
window()
輸出
以上程式碼產生以下輸出:
contents of text box: h contents of text box: he contents of text box: hel contents of text box: hell contents of text box: hello editing finished
使用 QLineEdit 進行密碼輸入
在下面的示例中,我們將使用 QlineEdit 控制元件建立密碼輸入欄位。在此示例中,我們將建立一個帶有單行 QLineEdit 控制元件的 PyQt 應用程式視窗,該控制元件配置為密碼輸入。當代碼執行時,它會顯示一個標題為“PyQt QLineEdit 控制元件”的視窗,其中包含一個密碼輸入欄位。QLineEdit 控制元件的 echoMode 屬性設定為 Password,確保輸入字元出於安全考慮而被掩蓋。
示例
以下是 QLineEdit 用於密碼輸入的示例。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt QLineEdit Widget')
self.setGeometry(100, 100, 320, 210)
password = QLineEdit(echoMode=QLineEdit.EchoMode.Password)
layout = QVBoxLayout()
layout.addWidget(password)
self.setLayout(layout)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
輸出
以上程式碼產生以下輸出:
使用 QLineEdit 的自動完成功能
在這裡,我們將使用 QLineEdit 控制元件建立一個自動完成功能。在此示例中,我們將初始化一個 PyQt 應用程式視窗,其中包含一個單行 QLineEdit 控制元件。QLineEdit 實現了自動完成功能,該功能使用 QCompleter 根據預定義的常用水果列表提供建議。當代碼執行時,標題為“PyQt QLineEdit 控制元件”的視窗將出現,其中包含 QLineEdit 欄位,當用戶鍵入時,為水果名稱提供自動完成功能。
示例
以下是帶有 QLineEdit 的自動完成功能的示例。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout, QCompleter
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt QLineEdit Widget')
self.setGeometry(100, 100, 320, 210)
common_fruits = QCompleter([
'Apple', 'Apricot', 'Banana', 'Carambola', 'Olive',
'Oranges', 'Papaya', 'Peach', 'Pineapple', 'Pomegranate',
'Rambutan', 'Ramphal', 'Raspberries', 'Rose apple',
'Starfruit', 'Strawberries', 'Water apple'
])
fruit = QLineEdit()
fruit.setCompleter(common_fruits)
layout = QVBoxLayout()
layout.addWidget(fruit)
self.setLayout(layout)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
輸出
以上程式碼產生以下輸出: