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、界面

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_15071263/article/details/106989653