天天看点

python判断字符串为空_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中出错的(不会报错,但是会退出消息循环) 该如何改?

解决方案

在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

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

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起