Home  >  Q&A  >  body text

python2 qt5 about how to determine whether a string is empty

#!/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_())

After converting pyqt4 to pyqt5, it is OK to write url.isEmpty() like this in pyqt4, but an error occurs in pyqt5 (no error will be reported, but the message loop will exit). How to change it?

某草草某草草2658 days ago902

reply all(2)I'll reply

  • phpcn_u1582

    phpcn_u15822017-06-12 09:29:12

    In PyQt4, the toPlainText method returns the QString class, and the QString class supports the isEmpty method. So in PyQt4 this is no problem.
    Most of PyQt5 is used under Python3 (of course PyQt5+Python2 can also be used). The basic str class in Python3 already supports various character encodings, so there is no QString in PyQt5. All those who are looking forward to the QString type API, just use the native str directly. Similarly, the toPlainText method returns the native str type. str does not have an isEmpty method, so it will fail.
    You can use the common str judgment method here

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

    reply
    0
  • 伊谢尔伦

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

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

    reply
    0
  • Cancelreply