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()

輸出

以上程式碼產生以下輸出:

QLineEdit Widget Output
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 password entry

使用 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())

輸出

以上程式碼產生以下輸出:

qlineedit Auto Complete
廣告

© . All rights reserved.