PyQt6入门之使用QLineEdit部件

经常需要用户输入一行文字,如用户名或密码。通过QLineEdit小组件,你可以从某人那里收集数据。QLineEdit还支持正常的文本编辑功能,如剪切、复制和粘贴,以及重做或撤销。还有一些额外的功能,如在输入时隐藏文本,使用占位符文本,甚至对文本的长度进行限制。

提示: 如果你需要多行让用户输入文本,请使用QTextEdit小组件代替。

接下来,你可以使用QLineEdit部件去创建GUI,同时,你也可以使用其他部件,如QPushButton,以及信号和槽来检索QLineEdit对象中的文本或清除其文本。


  • 创建空白GUI
    示例程序如下:
# line_edits.py
# Import necessary modules
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QPushButton)
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initializeUI()


    def initializeUI(self):
        """Set up the application's GUI."""
        self.setMaximumSize(310, 130)
        self.setWindowTitle("QLineEdit Example")

        self.setUpMainWindow()
        self.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

之前的例子已经使用setGeometry()来设置窗口在屏幕上的位置和大小。你可以做的一件事是限制窗口的大小。这里,让我们使用QWidget方法setMaximumSize(),并传递MainWindow的最大宽度和高度。


  • 创建QLabel对象、QLineEdit部件和QPushButton对象

要在setUpMainWindow()方法中设置小部件之前,我们将首先创建两个QLabel对象,然后是一个QLineEdit小组件,以及两个QPushButton对象。

    def setUpMainWindow(self):
        """Create and arrange widgets in the main window."""
        QLabel("Please enter your name below.", self).move(70, 10)
        name_label = QLabel("Name:", self)
        name_label.move(20, 50)

        self.name_edit = QLineEdit(self)
        self.name_edit.resize(210, 20)
        self.name_edit.move(70, 50)

        clear_button = QPushButton("Clear", self)
        clear_button.move(140, 90)
        clear_button.clicked.connect(self.clearText)

        accept_button = QPushButton("Accept", self)
        accept_button.move(210, 90)
        accept_button.clicked.connect(self.acceptText)

这两个QLabel对象只是创建widget的例子。你可以创建widget,并在你的GUI中安排它们,而不必将它们赋值给一个变量。
QLineEdit对象,name_edit,是一个使用resize()方法修改widget大小的例子。你需要指定小部件所需的高度和宽度值。
clear_button和accept_button对象与接下来创建的clearText()和acceptText()槽相连。

  • 编写 clearText() 和 acceptText() 槽

当clear_button被点击时,它发出一个连接到clearText()槽的信号,name_edit小组件将对该信号做出反应并清除其当前文本。如果用户点击accept_button,name_edit中的文本会被使用getter text()读取并打印在你的计算机的shell中。然后应用程序就关闭了。

接下俩,让我们来看看另一个在桌面应用程序中常见的部件——QCheckBox。

  • 完整程序如下:
# line_edits.py
# Import necessary modules
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QPushButton)
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initializeUI()


    def clearText(self):
        """Clear the QLineEdit input field."""
        self.name_edit.clear()


    def acceptText(self):
        """Accept the user's input in the QLineEdit widget 
        and close the program."""
        print(self.name_edit.text())
        self.close()


    def setUpMainWindow(self):
        """Create and arrange widgets in the main window."""
        QLabel("Please enter your name below.", self).move(70, 10)
        name_label = QLabel("Name:", self)
        name_label.move(20, 50)

        self.name_edit = QLineEdit(self)
        self.name_edit.resize(210, 20)
        self.name_edit.move(70, 50)

        clear_button = QPushButton("Clear", self)
        clear_button.move(140, 90)
        clear_button.clicked.connect(self.clearText)

        accept_button = QPushButton("Accept", self)
        accept_button.move(210, 90)
        accept_button.clicked.connect(self.acceptText)


    def initializeUI(self):
        """Set up the application's GUI."""
        self.setMaximumSize(310, 130)
        self.setWindowTitle("QLineEdit Example")

        self.setUpMainWindow()
        self.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

运行结果如下

Alt
Alt
Alt
Alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值