if str(self.btn_name.text()).lower == "empty ":
這是代碼最早的寫法,問了下寫這代碼的人,才知道這邊加上str是因爲.btn_name.text()的結果是Qstring,需要str轉換爲string類型,這樣才能調用lower方法。
後來我發現Qstring好像也有lower的方法。
lower後面少了(),可能是疏忽吧。
但是這句話還是報錯:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
明顯是編碼問題了。
google了一番說Qstring是unicode的,‘empty’是char類型的
所有想用toAscii()轉換爲ASCII,但是網上找到的質料都說會報錯。
而且網絡上的質料都是想辦法把中文顯示出來而已,和我的目標不太一樣。
後來聽同事說u'aaa' 和‘aaa’比較是相等的,所以直接用unicode和ascii比較:於是用下面的方法把中文轉換爲utf8編碼的字符串,然後調用lower()
if unicode(self.btn_name.text().toUtf8(), 'utf8', 'ignore').lower() == 'empty':