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
广告