Heim  >  Fragen und Antworten  >  Hauptteil

python2 qt5 darüber, wie man feststellt, ob eine Zeichenfolge leer ist

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# QQ: 78619808
# Created by Kylin on 2017/5/31
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super(Window,self).__init__()
        self.setWindowTitle(u'加密字符串')
        self.setFixedSize(300,200)
        vbox=QVBoxLayout()
        self.inputbox=QTextEdit()
        vbox.addWidget(self.inputbox)
        hbox=QHBoxLayout()
        tranbtn=QPushButton(u'加密')
        aboutbtn=QPushButton(u'关于')
        self.resultLabel = QLabel("Result:")
        hbox.addWidget(aboutbtn)
        hbox.addWidget(tranbtn)
        aboutbtn.clicked.connect(self.OnAbout)
        tranbtn.clicked.connect(self.OnTran)
        vbox.addLayout(hbox)
        self.outputbox=QTextEdit()
        vbox.addWidget(self.outputbox)
        vbox.addWidget(self.resultLabel)
        self.setLayout(vbox)

    def OnAbout(self):
        QMessageBox.about(self,u'关于',u'字符串加密工具 by 史艳文')

    def OnTran(self):
        url = self.inputbox.toPlainText()
        if url.isEmpty(): #执行到这里出错了,退出了消息循环
            self.resultLabel.setText("是空的")
        self.resultLabel.setText("不是空的")


if __name__=='__main__':
    app=QApplication(sys.argv)
    myshow=Window()
    myshow.show()
    sys.exit(app.exec_())

Nach der Konvertierung von pyqt4 in pyqt5 ist es in Ordnung, url.isEmpty() so in pyqt4 zu schreiben, aber in pyqt5 tritt ein Fehler auf (es wird kein Fehler gemeldet, aber die Nachrichtenschleife wird beendet).

某草草某草草2708 Tage vor935

Antworte allen(2)Ich werde antworten

  • phpcn_u1582

    phpcn_u15822017-06-12 09:29:12

    在PyQt4中,toPlainText方法返回的是QString类,QString类支持isEmpty方法。所以在PyQt4中这样没问题。
    而PyQt5大多数是在Python3下用的(当然PyQt5+Python2也可以),在Python3中基本str类已经很好的支持了各类字符编码,所以PyQt5中已经没有QString了,所有期待QString类型的API,直接使用原生str即可。同样的,toPlainText方法返回的也是原生的str类型。str没有isEmpty方法,所以会失败。
    这里使用普通str的判断方法即可

    url = str(self.inputbox.toPlainText())  # 如果是Python2,这里需要str()转换,如果是Python3则不用
    if url == ''
    if len(url) == 0
    if url

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-12 09:29:12

    url = str(self.inputbox.toPlainText())
    if url:
        #非空
    else:
        #空

    Antwort
    0
  • StornierenAntwort