如何防止pyqt中的textEdit更改何时输入多个字符?
找不到设置qt设计器来限制字符数,或限制自动调整框的大小。
尝试过:
self.ui.textEdit_45.setFixedSize(30, 30)
将最小值和最大值设置为宽度30,高度30
sizePolicy [固定,固定,0,0]
没用?
如果输入的字符超过2个,则框在右上角和左下角显示2 x,并且无法显示框中的内容。
答案 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_())