码迷,mamicode.com
首页 > 其他好文 > 详细

Tkinter小工具程序

时间:2020-03-14 11:08:11      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:arp   quit   消息   标题   raw   程序   span   class   query   

import tkinter as tk
import tkinter.filedialog
import tkinter.messagebox as mb
import webbrowser


class RosDecrypt(object):
    file_lists = []
    name = ‘‘
    pwd = ‘‘

    def __init__(self):

        self.root = tk.Tk()
        # 获取当前屏幕长宽
        screenwidth = self.root.winfo_screenwidth()
        screenheight = self.root.winfo_screenheight()
        # 设定窗口的大小(长 * 宽)
        width = 240
        height = 180
        # 设置窗口在屏幕居中
        size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
        self.root.geometry(size)

        varName = tk.StringVar()
        varName.set(‘‘)
        varPwd = tk.StringVar()
        varPwd.set(‘‘)
        # 创建标签
        labelName = tk.Label(self.root, text=用户名:, justify=tkinter.RIGHT, width=80)
        # 将标签放到窗口上
        labelName.place(x=25, y=25, width=80, height=20)
        # 创建文本框,同时设置关联的变量
        self.entryName = tk.Entry(self.root, width=80, textvariable=varName)
        self.entryName.insert(end, xiaoradmin)
        self.entryName.place(x=100, y=25, width=80, height=20)
        labelPwd = tk.Label(self.root, text=密  码:, justify=tkinter.RIGHT, width=80)
        labelPwd.place(x=25, y=50, width=80, height=20)
        # 创建密码文本框
        self.entryPwd = tk.Entry(self.root, show=*, width=80, textvariable=varPwd)
        self.entryPwd.place(x=100, y=50, width=80, height=20)
        self.entryPwd.bind(sequence="<Key-Return>", func=self.login)
        buttonOk = tk.Button(self.root, text=登录)
        buttonOk.bind(sequence="<Button-1>", func=self.login)
        buttonOk.place(x=60, y=90, width=50, height=20)
        buttonCancel = tk.Button(self.root, text=取消, command=self.root.quit)
        buttonCancel.place(x=120, y=90, width=50, height=20)
        # 启动消息循环
        self.root.mainloop()

    # 登录按钮事件处理函数
    def login(self, str):
        # 获取用户名和密码
        name = self.entryName.get()
        pwd = self.entryPwd.get()

        if name == xiaoradmin and pwd == 1234567888:
            self.root.withdraw()
            self.Main()

        else:
            tkinter.messagebox.showerror(Error, message=密码错误!)

    def Main(self):
        login_ui = tk.Tk()
        login_ui.title(深圳市小二极客科技有限公司)  # 给窗口设置标题 这里为空
        screenwidth = login_ui.winfo_screenwidth()
        screenheight = login_ui.winfo_screenheight()
        width = 350
        height = 350
        size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
        login_ui.geometry(size)
        login_ui.maxsize(350, 350)
        # 创建组件
        top_label = tk.Label(login_ui, text=ROS解密工具, font=(黑体, 15), width=40,
                             height=2)
        self.entey_int = tk.Entry(login_ui, bg=white, font=(黑体, 12))
        self.entey_int.place(width=133, height=20)
        self.text = tk.Text(login_ui, width=16, height=1, font=(黑体, 12))
        label_query = tk.Label(login_ui, text=输入SN查询, width=9)
        bottom_label_1 = tk.Label(login_ui, text=用心做好车 天生为创客, font=(黑体, 10), width=40, height=1)
        button_write = tk.Button(login_ui, text="文件模式")
        button_write.bind(sequence="<Button-1>", func=self.rasp_write)
        button_help = tk.Button(login_ui, text="  帮助  ")
        button_help.bind(sequence="<Button-1>", func=self.help)
        button_exit = tk.Button(login_ui, text="  退出  ", command=login_ui.quit)
        button_query = tk.Button(login_ui, text="手动模式", command=self.query)
        # button_query.bind(sequence="<Button-1>", func=self.query)

        top_label.place(x=-25, y=0)
        label_query.place(x=190, y=60)
        self.entey_int.place(x=150, y=90)
        self.text.place(x=150, y=110)
        button_query.place(x=185, y=140)
        bottom_label_1.place(x=130, y=330)
        button_write.place(x=15, y=95)
        button_help.place(x=240, y=205)
        button_exit.place(x=15, y=205)
        login_ui.mainloop()

    # 查询函数
    @staticmethod
    def query(self):
        txt = self.entey_int.get()
        if len(txt) != 8:
            self.numbe_Error()
        else:
            str_num = RosDecrypt.author(txt)
            print(str_num)
            self.entey_int.delete(0, "end")
            self.text.insert(end, str_num)
            return str_num

    # 文件模式界面
    def rasp_write(self, str):
        write_ui = tk.Tk()
        write_ui.title(文件模式)
        # 设置界面最小且屏幕居中
        screenwidth = write_ui.winfo_screenwidth()
        screenheight = write_ui.winfo_screenheight()
        width = 350
        height = 350
        size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
        write_ui.geometry(size)

        top_label = tk.Label(write_ui, text=请点下方按钮进行写入或生成!, font=(黑体, 12))
        top_label2 = tk.Label(write_ui, text=请选择插入SD卡根目录中的sn文件!, font=(黑体, 12))
        button_choose = tk.Button(write_ui, text=" 请选择sn文件 ", font=(黑体, 12))
        button_choose.bind(sequence="<Button-1>", func=self.choose_file)
        self.label_info = tk.Label(write_ui, width=40, height=25, text=‘‘, anchor=nw, font=(黑体, 10), justify=left)

        top_label.place(x=30, y=15)
        top_label2.place(x=30, y=45)
        self.label_info.place(x=30, y=105)
        button_choose.place(x=85, y=75)

        write_ui.attributes("-topmost", True)
        write_ui.mainloop()

    # 帮助文档窗口
    def help(self, str):
        win = tk.Tk()
        win.title("help")

        screenwidth = win.winfo_screenwidth()
        screenheight = win.winfo_screenheight()
        width = 350
        height = 350
        size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
        win.geometry(size)
        win.maxsize(350, 350)

        top_label = tk.Label(win, text=使用说明, font=(黑体, 14), width=40,
                             height=2)
        bottom_label_1 = tk.Label(win, text=用心做好车 天生为创客, font=(黑体, 10), width=40, height=1)

        text = tk.Text(win, width=35, height=9, font=(微软雅黑, 13))
        button_help = tk.Button(win, text=" 还不明白点我 ")
        button_help.place(x=120, y=280)
        button_help.bind("<Button-1>", self.open_url)
        text.place(x=20, y=70)
        str_help = 树莓派解密步骤:\n    点击文件模式后,请直接选择插入内存卡中boot文件夹里的sn文件即可\n\nJetson Nano解密步骤:\n                        点击文件模式前,请把Jetson Nano中的xiaor文件夹里的sn文件拖入win桌面后再点击文件模式,选择sn文件后会生成一个author文件,拖回xiaor文件夹里覆盖即可
        text.insert(tk.INSERT, str_help)

        top_label.place(x=-5, y=0)
        bottom_label_1.place(x=134, y=330)
        text.place(x=0, y=50)

        win.mainloop()

    def open_url(self, event):
        webbrowser.open("https://www.cnblogs.com/cxstudypython/p/12486645.html", new=0)

    # 文件选择函数
    def choose_file(self, str):
        self.file_lists.append(您选择的文件是:)
        # 弹出弹窗让用户选择文件
        path = tkinter.filedialog.askopenfilename(title=选择sn文件后自动烧录)
        try:
            # 第一种情况:选择的不是SN文件
            if path[-2:] != sn:
                self.file_lists.append(错误选择!)
                self.file_lists.append(path)
                self.label_info[text] = \n.join(self.file_lists)
                self.choose_Error()
            # 第二种情况:SN为初始值
            if path[-2:] == sn:
                with open(path, r) as files:
                    str_num = files.read()
                if str_num == 2d27572e:
                    self.not_Use()
                else:
                    self.file_lists.append(path)
                    self.label_info[text] = \n.join(self.file_lists)
                    way = path[:-3] + /author
                    write_num = RosDecrypt.author(str_num)
                    with open(way, w) as f:
                        f.write(write_num)
                    self.file_lists.append(写入值为: + write_num)
                    self.file_lists.append(write successful!!!\n请拔出内存卡)
                    self.label_info[text] = \n.join(self.file_lists)
        except Warning:
            self.unknown_Error()

    # 错误信息窗口
    def choose_Error(self):
        message = tkinter.Tk()
        # 调用withdraw(),让对象不可见
        message.withdraw()
        mb.showinfo(Error, 请选择正确的文件!)

    # 未知错误
    def unknown_Error(self):
        message = tkinter.Tk()
        # 调用withdraw(),让对象不可见
        message.withdraw()
        mb.showinfo(Error, 未知错误!)

    # 内存卡错误信息窗口
    def not_Use(self):
        message = tkinter.Tk()
        # 调用withdraw(),让对象不可见
        message.withdraw()
        mb.showinfo(Error, 内存卡未使用!)

    # 未知错误
    def numbe_Error(self):
        message = tkinter.Tk()
        # 调用withdraw(),让对象不可见
        message.withdraw()
        mb.showinfo(Error, 输入的字符长度不为8!)

    # 加密算法
    @staticmethod
    def author(xin):
        y = xin + 2
        return y


file_write = RosDecrypt()

 

Tkinter小工具程序

标签:arp   quit   消息   标题   raw   程序   span   class   query   

原文地址:https://www.cnblogs.com/cxstudypython/p/12490662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!