在初始化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_())