📜  PyQt5 - 获取可滚动标签的文本(1)

📅  最后修改于: 2023-12-03 15:03:56.462000             🧑  作者: Mango

PyQt5 - 获取可滚动标签的文本

在PyQt5中,我们可以使用QScrollArea来创建可滚动标签。但是,如果想要获取可滚动标签中的文本内容,需要使用QTextBrowser。

下面是一个简单的例子,演示如何创建一个可滚动标签和一个按钮,点击按钮后在控制台中输出可滚动标签中的文本。

from PyQt5.QtWidgets import QApplication, QMainWindow, QScrollArea, QWidget, QVBoxLayout, QPushButton, QTextBrowser
import sys

class ScrollableLabel(QScrollArea):
    def __init__(self, *args, **kwargs):
        QScrollArea.__init__(self, *args, **kwargs)

        # 创建一个QWidget并设置其Layout
        self.widget = QWidget(self)
        self.setWidget(self.widget)
        self.layout = QVBoxLayout(self.widget)
        self.layout.setAlignment(Qt.AlignTop)

        # 创建一个QTextBrowser并将其添加到Layout中
        self.textBrowser = QTextBrowser(self.widget)
        self.textBrowser.setReadOnly(True)
        self.layout.addWidget(self.textBrowser)

        # 设置属性
        self.setWidgetResizable(True)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # 添加标签内容
        self.textBrowser.append("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et fringilla urna. Sed ullamcorper ex sit amet purus imperdiet, vel consectetur magna lobortis. Nunc et semper ante. Nulla facilisi. Duis viverra lacus non turpis tristique, non blandit mi rutrum. Sed luctus, tellus quis varius viverra, urna augue finibus tellus, at faucibus sapien quam et nisl. In hac habitasse platea dictumst.")

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置窗口属性
        self.setWindowTitle("可滚动标签")

        # 创建一个ScrollableLabel并将其添加到窗口中
        self.scrollableLabel = ScrollableLabel(self)
        self.setCentralWidget(self.scrollableLabel)

        # 创建一个按钮并将其添加到窗口中
        self.button = QPushButton("获取文本", self)
        self.button.clicked.connect(self.on_button_clicked)
        self.layout().addWidget(self.button)

    def on_button_clicked(self):
        # 获取ScrollableLabel中的文本
        text = self.scrollableLabel.textBrowser.toPlainText()
        print(text)

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

在上面的例子中,我们首先创建了一个名为ScrollableLabel的类,它继承自QScrollArea。我们通过创建一个QWidget并将其添加到QScrollArea中来创建一个可滚动标签。然后,我们创建一个QTextBrowser并将其添加到QWidget的Layout中。最后,我们设置一些属性以使其能够垂直滚动。

接下来,我们创建了一个名为MainWindow的类,它继承自QMainWindow。我们在其中创建了一个ScrollableLabel和一个按钮。当用户点击按钮时,我们使用QTextBrowser的toPlainText()函数获取ScrollableLabel中的文本内容,并将其输出到控制台中。

运行上面的代码后,可以看到一个带有可滚动标签和按钮的窗口。当用户点击按钮时,控制台将输出可滚动标签中的文本。

## Markdown

在PyQt5中,我们可以使用QScrollArea来创建可滚动标签。但是,如果想要获取可滚动标签中的文本内容,需要使用QTextBrowser。

- 首先,我们创建一个名为ScrollableLabel的类,它继承自QScrollArea。
- 接下来,我们通过创建一个QWidget并将其添加到QScrollArea中来创建一个可滚动标签。
- 然后,我们创建一个QTextBrowser并将其添加到QWidget的Layout中。
- 最后,我们设置一些属性以使其能够垂直滚动。

```python
class ScrollableLabel(QScrollArea):
    def __init__(self, *args, **kwargs):
        QScrollArea.__init__(self, *args, **kwargs)

        # 创建一个QWidget并设置其Layout
        self.widget = QWidget(self)
        self.setWidget(self.widget)
        self.layout = QVBoxLayout(self.widget)
        self.layout.setAlignment(Qt.AlignTop)

        # 创建一个QTextBrowser并将其添加到Layout中
        self.textBrowser = QTextBrowser(self.widget)
        self.textBrowser.setReadOnly(True)
        self.layout.addWidget(self.textBrowser)

        # 设置属性
        self.setWidgetResizable(True)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # 添加标签内容
        self.textBrowser.append("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et fringilla urna. Sed ullamcorper ex sit amet purus imperdiet, vel consectetur magna lobortis. Nunc et semper ante. Nulla facilisi. Duis viverra lacus non turpis tristique, non blandit mi rutrum. Sed luctus, tellus quis varius viverra, urna augue finibus tellus, at faucibus sapien quam et nisl. In hac habitasse platea dictumst.")

我们在MainWindow中添加了一个按钮,当用户点击时,我们将使用QTextBrowser的toPlainText()函数获取可滚动标签的文本内容。

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置窗口属性
        self.setWindowTitle("可滚动标签")

        # 创建一个ScrollableLabel并将其添加到窗口中
        self.scrollableLabel = ScrollableLabel(self)
        self.setCentralWidget(self.scrollableLabel)

        # 创建一个按钮并将其添加到窗口中
        self.button = QPushButton("获取文本", self)
        self.button.clicked.connect(self.on_button_clicked)
        self.layout().addWidget(self.button)

    def on_button_clicked(self):
        # 获取ScrollableLabel中的文本
        text = self.scrollableLabel.textBrowser.toPlainText()
        print(text)

最后,我们运行了这个例子,它可以创建可滚动标签和按钮,并且可以输出可滚动标签中的文本内容。