• 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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    接下来,可以使用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)
    
    • 1
    • 2

    例如,将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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    此外,还可以限制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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    数据结构界的幻神(First)----链表
    『Java安全』Unsafe类
    聪明人和傻子和程序员
    ROS(1)话题模型
    [微前端实战]---041 框架初建(中央控制器, 子应用注册)
    SSM+Java体育用品库存管理系统 毕业设计-附源码211712
    高速计数器转RS485Modbus RTU模块IBF150
    数据结构——优先队列c++详解
    yo!这里是进程间通信
    Elasticsearch--easy-ES框架使用,轻松操作查询Elasticsearch,简化开发
  • 原文地址:https://blog.csdn.net/matt45m/article/details/137437205