首页 >社区问答列表 >python2 qt5 关于如何判断字符串为空

python2 qt5 关于如何判断字符串为空

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

pyqt4转换到pyqt5后url.isEmpty()在pyqt4中这样写是没问题,但是在pyqt5中出错的(不会报错,但是会退出消息循环) 该如何改?

  • phpcn_u1582
  • phpcn_u1582    2017-06-12 09:29:122楼

    在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

    +0添加回复

  • 回复