python2 qt5 关于如何判断字符串为空
问题描述
#!/usr/bin/python# -*- coding: UTF-8 -*-# QQ: 78619808# Created by Kylin on 2017/5/31import sysfrom 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中出错的(不会报错,但是会退出消息循环) 该如何改?
问题解答
回答1:在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) == 0if url回答2:
url = str(self.inputbox.toPlainText())if url: #非空else: #空
相关文章:
1. docker网络端口映射,没有方便点的操作方法么?2. docker容器呢SSH为什么连不通呢?3. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题4. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~5. 请问“由于 Cookie “PHPSESSID”的“SameSite”属性设置为“None”,但缺少“Secure”属性,此 Cookie 未来将被拒绝。”请问出现这个问题怎么办?6. docker api 开发的端口怎么获取?7. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?8. golang - 用IDE看docker源码时的小问题9. docker start -a dockername 老是卡住,什么情况?10. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?

网公网安备