#!/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_())
Selepas menukar pyqt4 kepada pyqt5, tidak mengapa untuk menulis url.isEmpty() seperti ini dalam pyqt4, tetapi ralat berlaku dalam pyqt5 (tiada ralat akan dilaporkan, tetapi gelung mesej akan keluar).
Dalam PyQt4, kaedah toPlainText mengembalikan kelas QString dan kelas QString menyokong kaedah isEmpty. Jadi dalam PyQt4 ini tiada masalah.
Kebanyakan PyQt5 digunakan di bawah Python3 (sudah tentu PyQt5+Python2 juga boleh digunakan Kelas str asas dalam Python3 sudah menyokong pelbagai pengekodan aksara, jadi tiada QString dalam PyQt5. Semua yang menantikan jenis QString API, hanya gunakan str asli secara langsung. Begitu juga, kaedah toPlainText mengembalikan jenis str asli. str tidak mempunyai kaedah isEmpty, jadi ia akan gagal.
Anda boleh menggunakan kaedah penghakiman str biasa di sini