python2 qt5 关于如何判断字符串为空
某草草
某草草 2017-06-12 09:27:12
0
2
933
#!/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中出错的(不会报错,但是会退出消息循环) 该如何改?

某草草
某草草

全部回复(2)
phpcn_u1582

在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
伊谢尔伦

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!