Heim > Fragen und Antworten > Hauptteil
#!/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_())
Nach der Konvertierung von pyqt4 in pyqt5 ist es in Ordnung, url.isEmpty() so in pyqt4 zu schreiben, aber in pyqt5 tritt ein Fehler auf (es wird kein Fehler gemeldet, aber die Nachrichtenschleife wird beendet).
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