当用户写QTextEdit时,如何更新它?(在Python上)

2024-05-23 19:30:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Python+Qt WebSMS应用程序/脚本。它请求一个号码和信息,并通过mechanize发送给沃达丰。由于我国的沃达丰不支持UTF-8,至少对于网络短信和每条短信都应该少于160个字符,我使用这个设置:

def setMesaj():
  global mesaj
  mesaj = unicode(self.textEdit.toPlainText().toUtf8(), "utf-8")
  mesaj = mesaj.encode("ascii", "ignore")
  if (len(mesaj)) > 159:
    print "[WARN-1] Mesaj 160 karakterden fazla?"
    i = len(mesaj) - 159
    mesaj = mesaj [:-i]
  print mesaj


QtCore.QObject.connect(self.textEdit, QtCore.SIGNAL("textChanged()"), setMesaj)

嗯,这很管用。如果消息超过160个字符,最后一个字母将被自动删除,如果用户试图键入任何“奇怪”字符,它将不被接受。在

我的问题是:变量'mesaj'工作得很好,但是它没有更新QTextEdit,所以当它没有得到超过160个字符(或Unicode)的内容时,它看起来还是允许用户使用的。那么,如何在用户写入QTextEdit时更新QTextEdit并使更改看起来同步呢?在

谢谢


Tags: 用户self脚本应用程序lenqt短信print
2条回答

检测文本光标正确位置的一种方法是使用^{}定义一个自定义错误函数,该函数重复"ignore",但还记得光标前面删除了多少个字符,并在编码后将光标的多个位置向左移动。在

def setMesaj(self):
  mesaj = unicode(self.toPlainText().toUtf8(), "utf-8")
  ascii = mesaj.encode("ascii", "ignore")
  if ascii != mesaj:
    self.setPlainText(ascii)

  if (len(mesaj)) > 159:
    QtGui.QMessageBox.warning(self, 'warning', "[WARN-1] Mesaj 160 karakterden fazla?")
    i = len(mesaj) - 159
    mesaj = mesaj [:-i]
    self.setPlainText(mesaj)

这将是我的快速和肮脏的方法,但你仍然需要把文本光标放在正确的位置后进行编辑。在

相关问题 更多 >