Python3的tkinter寫一個簡單的小程序


一、這個學期開始學習python,但是看了python2和python3,最后還是選擇了python3

    本着熟悉python的原因,並且也想做一些小程序來增加自己對python的熟練度。所以寫了一個簡單的程序,這個小程序實現了basa64、base32的加解碼。並且添加了一個md5生成的功能。ps:覺得python開發也挺好玩的。。。

 

二、運行程序截圖:

    

上面的就是程序的整體界面了。。

 

三、程序的設計:

  源代碼就在下面貼圖了,並且需要的文檔可以--------------搜索吧。。。。。

     

import os
import sys
import base64
import hashlib
import tkinter as tk

def main():
    root = tk.Tk() // 這里
    #fix the root window size
    root.minsize(380, 530)
    root.maxsize(380, 530) //這里主要是控制窗口的大小,讓窗口大小不能改變
    #root.geometry("1366x250")
    root.title('Bin_LmmH_C Decoder') //設置主窗口的標題
    #display the quit button
    text = edit(root)        //
    l = tk.Label(root, text='My name is Bin_LmmH_C', fg='white', bg='black', width=30)
    l.grid(sticky=tk.E+tk.W+tk.S+tk.N)
    button(root, text)
    #quitbutton(root)
    root.mainloop()   // 這里進入頂層窗口的循環
#build the edit and result Text,建立兩個edit控件
def edit(root):
    edit = tk.Text(root, fg='white', bg='green', font='微軟雅黑', width=30, height=10,)
    edit.grid(sticky=tk.N+tk.E+tk.W)

    #button 傳遞參數使用lambda函數
    #delete all the value in the text editor
    clear1 = tk.Button(root, text='Clear', width=27, bg='yellow', font='微軟雅黑', command=lambda :edit.delete(1.0, tk.END))
    clear1.grid()

    result = tk.Text(root, fg='white', bg='green', font='微軟雅黑', width=30, height=10,)
    result.grid(sticky=tk.N+tk.E+tk.W)

    #button 傳遞參數使用lambda函數
    #delete all the value in the text editor
    clear2 = tk.Button(root, text='Clear', width=27, bg='yellow', font='微軟雅黑', command=lambda :result.delete(1.0, tk.END))
    clear2.grid()
    text = [edit, result]
    return text

//這里定義窗口中所有的按鈕控件,並且顯示出來,並且設置好每個按鈕的響應函數,使用button的command選項來控制
def button(root, text): clu = 0 b64en = tk.Button(root, text='Base64 Encode', fg='white', bg='green', command=lambda :b64encode(text)) b64de = tk.Button(root, text='Base64 Decode', fg='white', bg='green', command=lambda :b64decode(text)) b32en = tk.Button(root, text='Base32 Encode', fg='white', bg='green', command=lambda :b32encode(text)) b32de = tk.Button(root, text='Base32 Decode', fg='white', bg='green', command=lambda :b32encode(text)) md5do = tk.Button(root, text='-Md5 Creator-', fg='white', bg='green', command=lambda :md5create(text)) but = [b64en, b64de, b32en, b32de, md5do] for i in but: i.grid(row=clu, column=1, sticky=tk.N+tk.S+tk.E+tk.W) clu += 1 return but def b64encode(text): #print(len(text), text) edit, result = text[0], text[1] enc = edit.get(1.0,tk.END) try: res = base64.b64encode(enc[0:-1].encode('ascii')) #print("res = ", res) except: return False result.insert(1.0, res.decode('ascii')) return True def b64decode(text): #print(len(text), text) edit, result = text[0], text[1] dec = edit.get(1.0,tk.END) try: res = base64.b64decode(dec[0:-1].encode('ascii')) except: return False result.insert(1.0, res.decode('ascii')) return True def b32encode(text): #print(len(text), text) edit, result = text[0], text[1] enc = edit.get(1.0,tk.END) try: res = base64.b32encode(enc[0:-1].encode('ascii')) result.insert(1.0, res.decode('ascii')) except: return False #showmessage(None, 'Something Error') return True
//這里定義md5生成函數
def md5create(text): #print(len(text), text) edit, result = text[0], text[1] dec = edit.get(1.0,tk.END) //獲取edit控件中的內容 #print("len dec = ", len(dec[0:-1])) #print("dec = ", dec) res = hashlib.md5() try: #it will add a new line character res.update(dec[0:-1].encode('ascii')) except: return False result.insert(1.0, res.hexdigest()) //將md5后的數據插入到輸出edit控件中 return True if __name__ == '__main__': main()

 

四、簡單的自我總結:

    在進行這次小工具的制作之前,遇到了一些問題和一些小技巧,比如按鈕傳遞參數的問題,就可以使用lambda這個表達式輕松的完成,而不用去考慮什么全局變量之類的,這個我感覺是非常方便的,遇到的問題都通過網絡來解決了,感覺還是挺好的,但是我對於自己沒有將問題記錄下來這個壞習慣,我是非常不爽的,我會改變掉這個壞習慣。好好學習,天天向上。    ps:分享是非常快樂的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM