window.title("密码破解工具") # 窗口标题 window.geometry("300x250")
接下来我一开始尝试直接在这块画布上使用pack方法画画,我发现每一个方块的位置并不像我预期的一样摆放整齐,它可能是这样的也有可能是这样的,总之十分诡异很难使用pack方法摆放整齐后来我发现了之前我漏掉一个非常重要的分隔组件——Frame这个东西就是一个框架,我们可以选择将组件贴在框架内,这样组件的位置就比较容易控制这个就是我前面说是在画布上进行贴画的说法于是我的设计图改成了这样子改成这样之后,页面编写就方便多了先在左边画一个大框架 frame = tkinter.Frame(window) frame.pack(side='left')
然后在左边的框架内画出服务器地址的框架和内容 #服务器IP提示标签、输入框 frame_ip = tkinter.Frame(frame) frame_ip.pack(side='top') label_ip = tkinter.Label(frame_ip,height=2,width=10,text="服务器地址") label_ip.pack(side='left') entry_ip = tkinter.Entry(frame_ip) entry_ip.pack(side='right')
接着我们在左边框架内再画一个服务器端口的框架和内容 #服务器端口提示标签、输入框 frame_port = tkinter.Frame(frame) frame_port.pack(side='top') label_port = tkinter.Label(frame_port,height=2,width=10,text="服务器端口") label_port.pack(side='left') entry_port = tkinter.Entry(frame_port) entry_port.pack(side='right')
然后我们再在左边框架内再画一个协议的框架和内容,由于协议是多个选择中选择一个,所以我们使用了一个Listbox组件,御用列举出多个协议 # 协议提示标签、输入框 list_pro = ['POP3', 'SMTP', 'IMAP', 'FTP', 'SSH', 'Oracle', 'MySql', 'SQL Server'] frame_pro = tkinter.Frame(frame) frame_pro.pack(side='top') label_pro = tkinter.Label(frame_pro,height=2,width=10, text="协议类型") label_pro.pack(side='left') listbox_pro = tkinter.Listbox(frame_pro) i = 0 for item in list_pro: listbox_pro.insert(i, item) i += 1 listbox_pro.pack(side='left')
这样我们左边的内容就完成了,接下来我们把右边的提交按钮完成,提交按钮中包含回调函数,需要获取服务器IP、服务器端口和选择的协议内容 #新建一个提交按钮 button = tkinter.Button(window,text="提交",height=15,width=15,command=lambda:[gettext(entry_ip,entry_port),get_select(listbox_pro,list_pro)]) button.pack(side='right')
接着我们把菜单按钮也写一些,菜单按钮应该也是包含了回调函数去执行我们明天需要完成的密码破解函数 Menubar = tkinter.Menu(window) Menubar.add_command(label="开始破解", command=lambda :mimapojie(dic_list['server_ip'], dic_list['server_port'],dic_list['pro'])) Menubar.add_command(label="退出", command=window.quit) window.config(menu=Menubar)
实现效果最终程序执行起来之后软件页面是这样的,是不是还是比较整齐,和我们的设计效果也是一致的明天我们再来看看如果将这些按钮的效果都实现了,有兴趣的小伙伴可以自己试一试哦如果可以的话,请帮忙点击下方广告,给菜鸟小白众筹一点电费,谢谢~(图片来源网络,侵删)
0 评论