Python PyQt5开发——QLineEdit文字输入框的使用方法和代码示例

QLineEdit

在初始化QLineEdit()之后,可以使用move()方法将其移动到想要显示的坐标位置。例如,下面的代码将mylabel移动到左边的(10,10)坐标,将mylineedit移动到右边的(60,10)坐标。这种手动排版的方式比较原始,后续的示例将介绍如何使用QGridLayout来进行UI布局。使用self.show()就可以完成初步的PyQt5 QLineEdit体验。

以下是一个简单的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('my window')
        self.setGeometry(50, 50, 240, 60)
        self.mylabel = QLabel('Name:', self)
        self.mylabel.move(10, 10)
        self.mylineedit = QLineEdit(self)
        self.mylineedit.move(60, 10)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

接下来,可以使用QGridLayout来进行UI布局,这样就不需要使用move()方法了。QGridLayout.addWidget()的三种函数参数介绍如下:

QGridLayout.addWidget(QWidget, int row, int column, Qt.Alignment alignment=0)
QGridLayout.addWidget(QWidget, int row, int column, int rowSpan, int columnSpan, Qt.Alignment alignment=0)

例如,将mylabel放置在(0,0)的位置,将mylineedit放置在(0,1)的位置,将mybutton放置在(1,0)的位置,并且第四个参数columnSpan延伸为2。

当用户在QLineEdit输入文字并按下按钮时,可以通过QLineEdit.text()的方式来获取输入的文字。下面的代码示例展示了如何在按下按钮时获取QLineEdit中的文字,并将其设置为mybutton显示的文字:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QPushButton

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('my window')
        self.setGeometry(50, 50, 240, 80)
        gridlayout = QGridLayout()
        self.setLayout(gridlayout)
        self.mylabel = QLabel('Name:', self)
        gridlayout.addWidget(self.mylabel, 0, 0)
        self.mylineedit = QLineEdit(self)
        gridlayout.addWidget(self.mylineedit, 0, 1)
        self.mybutton = QPushButton('button', self)
        gridlayout.addWidget(self.mybutton, 1, 0, 1, 2)
        self.mybutton.clicked.connect(self.onButtonClick)

    def onButtonClick(self):
        if self.mylineedit.text() != '':
            self.mybutton.setText(self.mylineedit.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

此外,还可以限制QLineEdit只能输入数字。为此,需要在QLineEdit上设置一个QIntValidator(),它会验证输入的文字是否为整数。以下是一个示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit
from PyQt5.QtGui import QIntValidator

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('my window')
        self.setGeometry(50, 50, 240, 60)
        gridlayout = QGridLayout()
        self.setLayout(gridlayout)
        self.mylabel = QLabel('Name:', self)
        gridlayout.addWidget(self.mylabel, 0, 0)
        self.mylineedit = QLineEdit(self)
        self.mylineedit.setValidator(QIntValidator())  # 只允许输入整数
        gridlayout.addWidget(self.mylineedit, 0, 1)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

QIntValidator()还可以限制你输入的整数范围,例如0~255,以及限制用户只能输入小数。

一个使用替代符号隐藏输入密码的示例。在这个示例中,创建了一个登录窗口,其中有两个QLineEdit,分别用于输入用户名和密码。希望用户输入的密码不要以明文显示,而是用替代符号显示。这可以通过在QLineEdit.setEchoMode()中设置QLineEdit.Password参数来实现。这样,在输入时就会显示替代符号而不是明文。以下是一个示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('my window')
        self.setGeometry(50, 50, 240, 60)
        gridlayout = QGridLayout()
        self.setLayout(gridlayout)
        self.mylabel = QLabel('Name:', self)
        gridlayout.addWidget(self.mylabel, 0, 0)
        self.mylineedit = QLineEdit(self)
        gridlayout.addWidget(self.mylineedit, 0, 1)
        self.mylabel2 = QLabel('Password:', self)
        gridlayout.addWidget(self.mylabel2, 1, 0)
        self.mylineedit2 = QLineEdit(self)
        self.mylineedit2.setEchoMode(QLineEdit.Password)  # 设置为密码模式
        gridlayout.addWidget(self.mylineedit2, 1, 1)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值