我們今天這一篇,就來講解這一長串**。
from pyqt5.qtgui import qfont
from pyqt5.qtcore import qt
import sys,os,shutil,sip
class
example
(qwidget)
:def
__init__
(self)
:super()
.__init__(
) self.settings(
)def
settings
(self)
: self.combo = qcombobox(self)
self.combo.additem("")
self.combo.additem(
"摩爾碼加密"
) self.combo.additem(
"倒置加密"
) self.combo.move(
150,10)
self.combo.activated[
str]
.connect(self.remember)
self.say = qlabel(self)
self.say.settext(
' '
) self.say.setfont(qfont(
'黑體',20
))self.say.move(90,
100)
self.choice = qlabel(self)
self.choice.settext(
'請選擇加密方式:'
) self.choice.setfont(qfont(
'黑體',12
))self.choice.move(15,
12.5
) self.info = qlineedit(self)
self.info.setplaceholdertext(
'請輸入加密內容'
) self.info.move(15,
50)self.yes = qpushbutton(
'確定'
,self)
self.yes.move(
200,
150)
self.yes.clicked.connect(self.yes_)
self.setgeometry(
300,
300,
300,
200)
self.setwindowtitle(
'密碼器'
) self.show(
)def
remember
(self, text)
: self.unit = text
defyes_
(self)
:try
:if self.unit ==
'摩爾碼加密'
: dict1 =
ls =
list
(self.info.text())
keyword_ls =
for i in
range
(len
(ls)):
])keyword =
' '.join(keyword_ls)
if'生成密碼目錄'
notin os.listdir(
'./'):
os.mkdir(
'生成密碼目錄'
)else
: shutil.rmtree(
'./生成密碼目錄'
) os.mkdir(
'./生成密碼目錄'
) where =
open
('./摩爾碼加密內容.txt'
,'w'
) where.write(keyword)
self.say.settext(
'錄入成功'
) where.close(
)if self.unit ==
'倒置加密'
: ls =
list
(self.info.text())
ls.reverse()if
'生成密碼目錄'
notin os.listdir(
'./'):
os.mkdir(
'生成密碼目錄'
)else
: shutil.rmtree(
'./生成密碼目錄'
) os.mkdir(
'./生成密碼目錄'
) where =
open
('./生成密碼目錄/倒置加密內容.txt'
,'w'
) where.writelines(ls)
self.say.settext(
'錄入成功'
) where.close(
)except
: self.say.settext(
'錄入失敗'
)if __name__ ==
'__main__'
: ex = example())
)首先解包,你們可能看這個**覺得很怪,沒辦法,複製過來就這樣。大家可以修改一下。然後我們建立類這些的沒問題吧。settings的那一段,有乙個知識點,就是下拉選框。這個東西我在gui教程裡會說,所以這裡大家就看一下吧。大概意思就是把你選擇的東西記錄下來,用qcombobox建立。朋友們可以先去學習一下,或者等到我出下拉選框的教程時再回頭看看。
設定標籤的沒問題吧。至於為什麼要空的,這個其實你可以改改,畢竟這只是乙個框架。這個remeber函式就是記錄你下拉選框的選擇。因為下拉選框繫結後會把你選擇的內容賦值到繫結**的引數中。但是這個text又只能在這個方法中用,所以需要用self.來記錄。其實這有更好的方法,不過我為了編的快一些,所以有些冗餘。大家可以自行修改。呵呵
下面的yes_中,首先使用異常處理,因為這裡面有開啟檔案,我不用with開啟檔案,是因為問題也有可能不出在檔案開啟,所以就用try+except。然後就是判斷。
摩爾碼加密裡,首先有乙個字典。表示摩爾碼與字母數字的互換。
然後因為是每個字母/數字對應一串摩爾碼。所以需要用list函式來轉換,這樣就是每乙個字母/數字都為一項。大家不明白,可用print函式列印一下ls。
然後建立乙個輸入到檔案裡的列表(就是將字母/數字轉換後的列表),迴圈的話大家自己分析(還是講講吧…):
首先,迴圈ls的長度,這個沒問題吧。
然後給keyword_ls列表增加ls裡的每一項對應的摩爾碼。那該怎麼增加呢?
ls[i]其實就是遍歷列表,然後將ls[i]作為鍵,然後在dict1找到對應的值,也就是對應的摩爾碼。最後加到keyword_ls的末尾。
然後將keyword_ls變為字串,名字為keyword。其實可以用writelines寫入列表(沒試過,大家可以試試),但是我更喜歡轉為字串。可是在倒置加密的時候我就是寫入列表(前後矛盾!!!)。不廢話了,接下來是寫入檔案,這一段非常有用,我給大家複製過來:
if
'生成密碼目錄'
notin os.listdir(
'./'):
os.mkdir(
'生成密碼目錄'
)else
: shutil.rmtree(
'./生成密碼目錄'
) os.mkdir(
'./生成密碼目錄'
)
這一段是覆蓋資料夾,因為os的mkdir如果已有檔案,就會報錯,所以用這個就可以判斷有沒有某個名字的資料夾。當然,你用異常處理也行。不過我喜歡用這個。
然後是寫入檔案,這個沒問題吧。
倒置加密其實就是列表的reverse功能,然後就是寫入檔案了。
然後如果報錯,就處理為『錄入失敗』。接著就有結果了。大家如果還有什麼加密方法,可以自己加上去喲!
python裝飾器講解筆記
公共 判斷乙個數是否是質數def is prime num if num 2 return false elif num 2 return true else for i in range 2 num if num i 0 return false return true1 不帶有裝飾器def pr...
python裝飾器,細緻講解
args,kwargs 命名空間與作用域 命名空間的 巢狀 是在函式定義階段,即檢測語法的時候確定的 函式物件 函式的巢狀定義 閉包函式 傳遞函式的方式 通過引數的形式為函式傳值 通過閉包的方式為函式傳值 什麼是裝飾器 為何要用裝飾器 需求 在不修改index函式源 以及呼叫方式的情況下為其新增統計...
python裝飾器 閉包 垃圾講解
第一部分裝飾器,接觸很久,沒理會原理。慚愧。第二部分裝飾器傳參的小實踐。第三部分閉包的理解,如果有錯誤,留著,以後再說。其本意就是在不改變原函式的基礎上,對函式新增功能。用途呢,aop思想,你說是吧。乙個自己寫裝飾器的例子 定義裝飾器 這種寫法比較適合簡單的包裹,只是會把real func前面 裹住...