【问题标题】:how to copy the text from text edit into a string variable?如何将文本编辑中的文本复制到字符串变量中?
【发布时间】:2016-09-26 14:41:03
【问题描述】:

我正在尝试将我输入的文本复制到文本编辑中并将其存储到字符串变量中。 我编写了以下代码,但它显示'python 已停止工作'

from PyQt5 import QtGui,QtWidgets,QtCore
import sys

class GUI(QtWidgets.QWidget):
     def __init__(self):
        super(GUI,self).__init__()
        self.initUI()
    def initUI(self):
        review = QtWidgets.QLabel('Review')
        reviewEdit = QtWidgets.QTextEdit()
        grid = QtWidgets.QGridLayout()

        grid.addWidget(review, 3, 0)
        grid.addWidget(reviewEdit, 3, 1, 5, 1)
        self.setLayout(grid)
        self.setGeometry(300,300,350,300)
        self.setWindowTitle('Sentiment Analysis')

        button = QtWidgets.QPushButton("OK")         
        grid.addWidget(button)
        button.clicked.connect(self.copyText)
        self.show()

    def copyText(self):
        reviewEdit.setText("text")
        print(text)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    GUI = GUI()
    sys.exit(app.exec_())

【问题讨论】:

    标签: python-3.x pyqt5


    【解决方案1】:

    由于copyText() 方法中的NameError,程序停止工作。 reviewEdit 变量不会在该范围内退出,因此您无法引用它。

    解决这个问题的方法是让主类的所有子小部件属性 - 然后您可以稍后使用 self 访问它们:

    class GUI(QtWidgets.QWidget):
        def __init__(self):
            super(GUI,self).__init__()
            self.initUI()
        def initUI(self):
            self.review = QtWidgets.QLabel('Review')
            self.reviewEdit = QtWidgets.QTextEdit()
            grid = QtWidgets.QGridLayout()
    
            grid.addWidget(self.review, 3, 0)
            grid.addWidget(self.reviewEdit, 3, 1, 5, 1)
            self.setLayout(grid)
            self.setGeometry(300,300,350,300)
            self.setWindowTitle('Sentiment Analysis')
    
            self.button = QtWidgets.QPushButton("OK")
            grid.addWidget(self.button)
            self.button.clicked.connect(self.copyText)
            self.show()
    
        def copyText(self):
            # self.reviewEdit.setText("text")
            text = self.reviewEdit.toPlainText()
            print(text)
    

    【讨论】:

      【解决方案2】:

      首先,您应该让 reviewEdit 成为 GUI 类的成员。像这样:

      self.reviewEdit = QtGui.QTextEdit()
      

      接下来,在 addBold(self) 中,你会得到这样的文本:

      text = str(self.reviewEdit.toPlainText())
      

      【讨论】:

        猜你喜欢
        • 2021-05-24
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        相关资源
        最近更新 更多