Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import multiprocessing
- from re import match
- from tkinter import Button, Label, Frame, Entry, Tk, PhotoImage
- from ping_window import NewProcessPingWindow
- logo_raw = 'very_long_byte_string with converted to bytes .ico'
- btn_icon_raw = 'very_long_byte_string with converted to bytes .png'
- def check_packages(symbol):
- return match("^\d{,7}$", symbol) is not None or symbol is None
- def check_ttl(symbol):
- if match("^\d*$", symbol) is not None and symbol != '':
- if int(symbol) > 255 or int(symbol) < 1:
- return symbol is None
- return match("^\d*$", symbol) is not None or symbol is None
- def check_size(symbol):
- if match("^\d{,4}$", symbol) is not None and symbol != '':
- if int(symbol) > 1472:
- return symbol is None
- return match("^\d{,4}$", symbol) is not None or symbol is None
- def check_float(symbol):
- if match("^\d*\.{,1}\d{,3}$", symbol) is not None and symbol != '':
- if symbol != '.' and float(symbol) > 3600.999:
- return symbol is None
- return match("^\d*\.{,1}\d{,3}$", symbol) is not None or symbol is None
- def main_window():
- time_passed = time.time()
- def ping():
- NewProcessPingWindow(set_daemon=True,
- url=address_entry.get(),
- packages=packages_entry.get(),
- interval=interval_entry.get(),
- timeout=timeout_entry.get(),
- ttl=ttl_entry.get(),
- size=size_entry.get(),
- window_size={'width': screen_width, 'height': screen_height},
- logo_raw=logo_raw).start()
- # print(len(multiprocessing.active_children()))
- # print(multiprocessing.active_children())
- def _onKeyRelease(event):
- ctrl = (event.state & 0x4) != 0
- if event.keycode == 88 and ctrl and event.keysym.lower() != "x":
- event.widget.event_generate("<<Cut>>")
- if event.keycode == 86 and ctrl and event.keysym.lower() != "v":
- event.widget.event_generate("<<Paste>>")
- if event.keycode == 67 and ctrl and event.keysym.lower() != "c":
- event.widget.event_generate("<<Copy>>")
- root = Tk()
- root.title("Ping-Pong")
- logo_icon = PhotoImage(data=logo_raw)
- root.iconphoto(False, logo_icon)
- root.pack_propagate(True)
- root.configure(background='#2b2b2b')
- root.resizable(width=False, height=False)
- root.bind_all("<Key>", _onKeyRelease, "+")
- container0 = Frame(root, background='#2b2b2b', padx=40, pady=40)
- container0.pack(anchor='center', expand=True)
- container1 = Frame(container0, background='#3c3f41', pady=20, padx=20)
- container1.pack(side='left', expand=True)
- container2 = Frame(container0, background='#2b2b2b', pady=8, padx=8)
- container2.pack(anchor='w', side='right', expand=True)
- btn_icon = PhotoImage(data=btn_icon_raw)
- btn_ping = Button(container2, image=btn_icon, relief='flat', bd=0, background='#2b2b2b', activebackground='#2b2b2b')
- btn_ping.config(command=lambda: ping())
- btn_ping.pack(side='right')
- buff_column = Label(container1, text='', padx=0, border=0, background='#2b2b2b')
- buff_column.grid(row=0, column=1, rowspan=7, sticky='nsew')
- address_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#D6ECFF',
- insertbackground='#D6ECFF')
- address_entry.insert(0, 'google.com')
- address_entry.bind('<Return>', lambda x: ping())
- address_entry.bind('<FocusIn>', lambda x: address_entry.select_range(0, 'end'))
- address_label = Label(container1, text='Address', bg='#3c3f41', fg='#D6ECFF', bd=0, font='Arial 12')
- address_label.grid(row=0, column=0, sticky='e', padx=(0, 10), pady=(0, 10))
- address_entry.grid(row=0, column=2, sticky='w', padx=(10, 0), pady=(0, 10))
- packages_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#90CDFF',
- insertbackground='#90CDFF',
- validate="key",
- validatecommand=(root.register(check_packages), "%P"))
- packages_entry.bind('<Return>', lambda x: ping())
- packages_entry.bind('<FocusIn>', lambda x: packages_entry.select_range(0, 'end'))
- packages_entry.insert(0, '4')
- packages_label = Label(container1, text='Packages', bg='#3c3f41', fg='#90CDFF', bd=0, font='Arial 12')
- packages_label.grid(row=2, column=0, sticky='e', padx=(0, 10), pady=(0, 10))
- packages_entry.grid(row=2, column=2, sticky='w', padx=(10, 0), pady=(0, 10))
- interval_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#90CDFF',
- insertbackground='#90CDFF',
- validate="key",
- validatecommand=(root.register(check_float), "%P"))
- interval_entry.bind('<Return>', lambda x: ping())
- interval_entry.bind('<FocusIn>', lambda x: interval_entry.select_range(0, 'end'))
- interval_entry.insert(0, '1')
- interval_label = Label(container1, text='Frequency', bg='#3c3f41', fg='#90CDFF', bd=0, font='Arial 12')
- interval_label.grid(row=3, column=0, sticky='e', padx=(0, 10), pady=(0, 10))
- interval_entry.grid(row=3, column=2, sticky='w', padx=(10, 0), pady=(0, 10))
- timeout_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#90CDFF',
- insertbackground='#90CDFF',
- validate="key",
- validatecommand=(root.register(check_float), "%P"))
- timeout_entry.bind('<Return>', lambda x: ping())
- timeout_entry.bind('<FocusIn>', lambda x: timeout_entry.select_range(0, 'end'))
- timeout_entry.insert(0, '4')
- timeout_label = Label(container1, text='Timeout', bg='#3c3f41', fg='#90CDFF', bd=0, font='Arial 12')
- timeout_label.grid(row=4, column=0, sticky='e', padx=(0, 10), pady=(0, 10))
- timeout_entry.grid(row=4, column=2, sticky='w', padx=(10, 0), pady=(0, 10))
- size_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#90CDFF',
- insertbackground='#90CDFF',
- validate="key",
- validatecommand=(root.register(check_size), "%P"))
- size_entry.bind('<Return>', lambda x: ping())
- size_entry.bind('<FocusIn>', lambda x: size_entry.select_range(0, 'end'))
- size_entry.insert(0, '32')
- size_label = Label(container1, text='Size', bg='#3c3f41', fg='#90CDFF', bd=0, font='Arial 12')
- size_label.grid(row=5, column=0, sticky='e', padx=(0, 10), pady=(0, 10))
- size_entry.grid(row=5, column=2, sticky='w', padx=(10, 0), pady=(0, 10))
- ttl_entry = Entry(container1,
- font='Arial 12',
- width=20,
- relief='flat', bd=5,
- bg='#2b2b2b',
- fg='#90CDFF',
- insertbackground='#90CDFF',
- validate="key",
- validatecommand=(root.register(check_ttl), "%P"))
- ttl_entry.bind('<Return>', lambda x: ping())
- ttl_entry.bind('<FocusIn>', lambda x: ttl_entry.select_range(0, 'end'))
- ttl_entry.insert(0, '128')
- ttl_label = Label(container1, text='TTL', bg='#3c3f41', fg='#90CDFF', bd=0, font='Arial 12')
- ttl_label.grid(row=6, column=0, sticky='e', padx=(0, 10), pady=(0, 0))
- ttl_entry.grid(row=6, column=2, sticky='w', padx=(10, 0), pady=(0, 0))
- root.update()
- screen_width = root.winfo_width()
- screen_height = root.winfo_height()
- root.minsize(width=screen_width, height=screen_height)
- time_passed = time.time() - time_passed
- print(time_passed)
- root.mainloop()
- if __name__ == '__main__':
- multiprocessing.freeze_support()
- main_window()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement