Python - 通過Python GUI 寫界面

Python - 通過Python GUI 寫界面


1、代碼

from tkinter import *
import hashlib
import time

if __name__ == '__main__':
    LOG_LINE_NUM = 0


    class gui():
        def __init__(self, init_window_name):
            self.init_window_name = init_window_name
            self.str_trans_to_md5_button = None

            self.log_text = Text(self.init_window_name, width=66, height=9)  # 日誌框
            self.log_label = Label(self.init_window_name, text="日誌")

            self.out_text = Text(self.init_window_name, width=70, height=49)  # 處理結果展示
            self.out_label = Label(self.init_window_name, text="輸出")

            self.in_text = Text(self.init_window_name, width=67, height=35)  # 原始數據錄入框
            self.in_label = Label(self.init_window_name, text="輸入")



        def init_window(self):
            self.init_window_name.title("MD5")  # 窗口名
            # X 爲窗口大小,+10 +10 定義窗口彈出時的默認展示位置,相對於左上角
            self.init_window_name.geometry('1068x681+10+10')
            # 輸入區
            self.in_label.grid()
            self.in_text.grid(row=1, column=0, rowspan=5, columnspan=5)

            # 輸出區
            self.out_label.grid(row=0, column=12)
            self.out_text.grid(row=1, column=12, rowspan=15, columnspan=10)

            # 日誌區
            self.log_label.grid(row=12, column=0)
            self.log_text.grid(row=13, column=0, columnspan=10)

            # 按鈕
            self.str_trans_to_md5_button = Button(self.init_window_name, text="MD5", bg="lightblue", width=10,
                                                  command=self.str_trans_to_md5)  # 調用內部方法  加()爲直接調用
            self.str_trans_to_md5_button.grid(row=1, column=11)

        # 功能函數
        def str_trans_to_md5(self):
            src = self.in_text.get(1.0, END).strip().replace("\n", "").encode()
            # print("src =",src)
            if src:
                try:
                    md5 = hashlib.md5()
                    md5.update(src)
                    digest = md5.hexdigest()
                    # 輸出到界面
                    self.out_text.delete(1.0, END)
                    self.out_text.insert(1.0, digest)
                    self.write_log_to_text("INFO:成了")
                except:
                    self.out_text.delete(1.0, END)
                    self.out_text.insert(1.0, "字符串轉MD5失敗")
            else:
                self.write_log_to_text("ERROR:敗了")

        # 獲取當前時間
        @staticmethod
        def current_time():
            current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
            return current_time

        # 日誌動態打印
        def write_log_to_text(self, logmsg):
            global LOG_LINE_NUM
            current_time = self.current_time()
            logmsg_in = str(current_time) + " " + str(logmsg) + "\n"  # 換行
            if LOG_LINE_NUM <= 7:
                self.log_text.insert(END, logmsg_in)
                LOG_LINE_NUM = LOG_LINE_NUM + 1
            else:
                self.log_text.delete(1.0, 2.0)
                self.log_text.insert(END, logmsg_in)


    def gui_start():
        main = Tk()  # 實例化出一個父窗口
        that = gui(main)
        # 設置根窗口默認屬性
        that.init_window()

        main.mainloop()  # 父窗口進入事件循環,可以理解爲保持窗口運行,否則界面不展示


    gui_start()

2、界面

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章