下面的代码创建了一个简单的对话框窗口,其中只有widget:QLineEdit。 在该字段中键入任何内容都会触发fixText()方法(在textChanged上),该方法清除传入的字符串参数。在字符串被“清理”之后,该方法使用结果更新QLineEdit。在
目标:不管用户在lineedit字段中输入了什么:
前四个字母总是大写。 第五个字符总是下划线。在
除了cleanupString()的作用外,字符串中剩余的字符不必被清除。在
需要实现的目标示例:zhou helloWorld
遇到问题:无法插入下划线字符而不会将事情搞乱。 负责插入下划线的代码行当前被注释。。。在
import sys, os
from PyQt4 import QtCore, QtGui
class Dialog_01(QtGui.QMainWindow):
def __init__(self):
super(QtGui.QMainWindow,self).__init__()
myQWidget = QtGui.QWidget()
myBoxLayout = QtGui.QVBoxLayout()
self.myQLineEdit = QtGui.QLineEdit("Type text here")
self.myQLineEdit.textChanged.connect(self.fixText)
myBoxLayout.addWidget(self.myQLineEdit)
myQWidget.setLayout(myBoxLayout)
self.setCentralWidget(myQWidget)
self.setWindowTitle('Dialog 01')
def fixText(self, arg):
arg=str(arg)
if not arg: return
arg=self.cleanupString(arg)
if len(arg)<3: result=arg.upper()
else: result = arg[0:4].upper()+arg[4:]
# resultList=list(result)
# resultList.insert(4, '_')
# result=''.join(resultList)
self.myQLineEdit.blockSignals(True)
self.myQLineEdit.setText(result)
self.myQLineEdit.blockSignals(False)
def cleanupString(self, line=None):
if line==None: return
invalid = invalid = ['!','"','#','$','%','&','\\','(',')','*','+',',','-','.','/'
,':',';','<','=','>','?','@','[',"'",']','^','`','{','|','}','~', ' ']
for c in invalid:
if len(line)>0: line=line.replace(c,'_')
return line
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dialog_1 = Dialog_01()
dialog_1.show()
dialog_1.resize(480,320)
sys.exit(app.exec_())
你可以这样做:
虽然,你不能用退格删除…你必须选择文本来删除它。在
相关问题 更多 >
编程相关推荐