如何防止pyqt中的textEdit更改

时间:2017-12-29 06:33:11

标签: python pyqt qtextedit

如何防止pyqt中的textEdit更改何时输入多个字符? 找不到设置qt设计器来限制字符数,或限制自动调整框的大小。
尝试过:

self.ui.textEdit_45.setFixedSize(30,  30)

将最小值和最大值设置为宽度30,高度30 sizePolicy [固定,固定,0,0]
没用?

如果输入的字符超过2个,则框在右上角和左下角显示2 x,并且无法显示框中的内容。

1 个答案:

答案 0 :(得分:0)

每次文本更改QTextEdit.toPlainText()时,一个想法是计算textEdit具有self.textEdit.textChanged.connect()的字符。如果字符数使得QTextEdit变形,则make看起来就像通过切片输入而禁用输入。

MWE:

from PyQt4 import  QtGui, QtCore
import sys

class MWindow(QtGui.QMainWindow):

    TwoDigits = 2 # Maximum number of characters allowed

    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setGeometry(300, 300, 250, 150)
        #define QTextEdit
        self.TE = QtGui.QTextEdit(self)
        self.TE.setGeometry(0,0, 30,30)

        self.TE.textChanged.connect(self.Limiter)

    def Limiter(self):
        NumChar = len( self.TE.toPlainText() )
        # according to geometry 2 characters is enough, so enter if over TwoDigits
        if NumChar > self.TwoDigits:
            Text = self.TE.toPlainText() # get text
            Text = Text[:self.TwoDigits] # slice first TwoDigits
            print(Text) # debugging
            self.TE.setPlainText(Text) # set sliced text
            self.TE.moveCursor(QtGui.QTextCursor.End) # move cursor to end, like if nothing happens

app = QtGui.QApplication([sys.argv])
win = MWindow()
win.show()
sys.exit(app.exec_())
相关问题