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. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處2. javascript - ios返回不執行js怎么解決?3. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題4. 視頻文件不能播放,怎么辦?5. python bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?6. html5 - HTML代碼中的文字亂碼是怎么回事?7. javascript - 求幫助 , ATOM不顯示界面!!!!8. mysql 查詢身份證號字段值有效的數據9. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示10. javascript - 為什么在谷歌控制臺 輸出1的時候,輸出的1立馬就不見了
