Python:如何检测qplainTextEdit中的文本,然后才启用按钮?

时间:2014-09-04 09:07:41

标签: python python-2.7 pyside

在我的Qt应用程序中,我有一个plainTextEdit框,我希望用户输入他希望python / Qt应用程序生成报告的硬件序列号。因此,硬件序列号是我的应用程序必须输入的,如果他没有输入,那么我不想启用报告生成pushButton

  1. 如何检测到他在框中输入了一些文字?然后启用按钮?
  2. 如何检测他是否完全删除了他输入的内容?然后禁用按钮?

1 个答案:

答案 0 :(得分:1)

连接QPlainTextEdit的{​​{3}}信号。只要文本发生变化,就会触发此操作。然后,您可以访问QPlainTextEdittextChanged()的内容,并使用它来决定是启用还是禁用该按钮。

这是一个简单的例子:

import sys
from PySide import QtCore, QtGui

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        widget = QtGui.QWidget()
        self.edit = QtGui.QPlainTextEdit()
        QtCore.QObject.connect(self.edit, QtCore.SIGNAL('textChanged()'), self.handleTextChange)
        self.button = QtGui.QPushButton('Generate Report')
        self.button.setEnabled(False)
        layout = QtGui.QVBoxLayout(widget)
        layout.addWidget(self.edit)
        layout.addWidget(self.button)
        self.setCentralWidget(widget)

    @QtCore.Slot()
    def handleTextChange(self):
        self.button.setDisabled(self.edit.toPlainText() == '')


app = QtGui.QApplication(sys.argv)    
main = MainWindow()
main.show()
sys.exit(app.exec_())