#!/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中出错的(不会报错,但是会退出消息循环) 该如何改?
phpcn_u15822017-06-12 09:29:12
在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