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

文章介绍了如何在PyQt5中使用QLineEdit进行文本输入,包括手动移动控件的位置,使用QGridLayout进行自动布局,以及处理密码输入时的隐藏显示。还演示了如何使用QIntValidator限制整数输入范围。

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_())
<think>我们正在使用PyQt5来添加按钮输入框。根据引用[2],我们首先需要导入必要的模块,然后创建一个应用程序窗口。接着,我们可以创建按钮(QPushButton)输入框(QLineEdit)控件,并将它们添加到窗口中。步骤:1.导入必要的模块:sys,QApplication,QWidget,QPushButton,QLineEdit,以及布局管理器(如QVBoxLayout或QHBoxLayout)来组织控件。2.创建应用程序对象窗口。3.创建按钮输入框,并设置它们的属性(如文本)。4.使用布局管理器将按钮输入框添加到窗口中。5.显示窗口并启动应用程序事件循环。下面是一个简单的示例代码,演示如何添加一个按钮一个输入框:</think>在 PyQt5 中添加按钮输入框需要以下步骤(基于引用[1][2][3]): ### 添加按钮输入框的步骤 1. **导入必要模块** ```python import sys from PyQt5.QtWidgets import ( QApplication, QWidget, QPushButton, QLineEdit, QVBoxLayout # 垂直布局管理器 ) ``` 2. **创建主窗口布局** ```python class MyWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口标题大小 self.setWindowTitle('按钮输入框示例') self.setGeometry(300, 300, 300, 200) # 创建垂直布局 layout = QVBoxLayout() ``` 3. **添加输入框** ```python # 创建文本输入框 self.input_box = QLineEdit(self) self.input_box.setPlaceholderText("在此输入内容") # 提示文本 layout.addWidget(self.input_box) # 添加到布局 ``` 4. **添加按钮** ```python # 创建按钮 self.button = QPushButton('点击我', self) self.button.clicked.connect(self.on_button_click) # 连接点击事件 layout.addWidget(self.button) # 添加到布局 ``` 5. **设置布局显示** ```python self.setLayout(layout) # 应用布局 self.show() # 显示窗口 def on_button_click(self): """按钮点击事件处理""" text = self.input_box.text() # 获取输入内容 print(f"输入的内容: {text}") # 这里可以添加其他处理逻辑 ``` 6. **启动应用程序** ```python if __name__ == '__main__': app = QApplication(sys.argv) ex = MyWindow() sys.exit(app.exec_()) ``` ### 功能说明 1. **输入框(QLineEdit)**: - 用户可输入任意文本内容 - `setPlaceholderText()` 设置灰色提示文本 - `text()` 方法获取输入内容 2. **按钮(QPushButton)**: - 通过 `clicked.connect()` 绑定点击事件 - 事件处理函数中可获取输入框内容 - 可自定义按钮文本样式 3. **布局管理器(QVBoxLayout)**: - 自动垂直排列控件[^1] - 确保窗口缩放时控件位置正确 ### 效果说明 运行后将显示一个窗口: - 顶部是文本输入框 - 下方是"点击我"按钮 - 在输入框输入文本后点击按钮,控制台会打印输入内容 > **提示**:要添加更多控件,只需在布局中继续添加 `addWidget()` 即可[^1]。对于复杂界面,建议使用 Qt Designer 可视化设计工具。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知来者逆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值