#!/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的判斷方法即可
雷雷