Vibrant Nexus Python GUI
👤 Sharing: AI
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import os
import hashlib
import datetime
import random
class VibrantNexusApp:
def __init__(self, root):
self.root = root
self.root.title("Vibrant Nexus")
self.root.geometry("800x600")
self.root.configure(bg='#f0f0f0')
self.style = ttk.Style()
self.style.theme_use('clam')
self.create_widgets()
def create_widgets(self):
# Notebook for Tab Management
self.notebook = ttk.Notebook(self.root)
self.notebook.pack(pady=10, padx=10, fill='both', expand=True)
# Tab 1: File Integrity Checker
self.file_tab = ttk.Frame(self.notebook)
self.notebook.add(self.file_tab, text='File Integrity Checker')
self.create_file_tab_content(self.file_tab)
# Tab 2: Text Encryption/Decryption
self.text_tab = ttk.Frame(self.notebook)
self.notebook.add(self.text_tab, text='Text Encryption/Decryption')
self.create_text_tab_content(self.text_tab)
# Tab 3: Random Data Generator
self.random_tab = ttk.Frame(self.notebook)
self.notebook.add(self.random_tab, text='Random Data Generator')
self.create_random_tab_content(self.random_tab)
# Details Button (Universal)
self.details_button = tk.Button(self.root, text="Details", command=self.show_details, bg='#4CAF50', fg='white', font=('Arial', 12, 'bold'), relief=tk.RAISED, bd=2)
self.details_button.pack(pady=10)
def create_file_tab_content(self, tab):
# File Selection
self.file_label = ttk.Label(tab, text='Select File:')
self.file_label.grid(row=0, column=0, padx=5, pady=5, sticky='w')
self.file_path_var = tk.StringVar()
self.file_path_entry = ttk.Entry(tab, textvariable=self.file_path_var, width=50)
self.file_path_entry.grid(row=0, column=1, padx=5, pady=5, sticky='we')
self.file_button = ttk.Button(tab, text='Browse', command=self.browse_file)
self.file_button.grid(row=0, column=2, padx=5, pady=5)
# Hash Algorithm Selection
self.hash_label = ttk.Label(tab, text='Select Hash Algorithm:')
self.hash_label.grid(row=1, column=0, padx=5, pady=5, sticky='w')
self.hash_algorithm_var = tk.StringVar(value='sha256')
self.hash_algorithm_combo = ttk.Combobox(tab, textvariable=self.hash_algorithm_var, values=['md5', 'sha1', 'sha256', 'sha512'], state='readonly')
self.hash_algorithm_combo.grid(row=1, column=1, padx=5, pady=5, sticky='we')
# Calculate Hash Button
self.calculate_button = ttk.Button(tab, text='Calculate Hash', command=self.calculate_hash)
self.calculate_button.grid(row=2, column=1, padx=5, pady=5)
# Hash Result
self.hash_result_label = ttk.Label(tab, text='Hash Result:')
self.hash_result_label.grid(row=3, column=0, padx=5, pady=5, sticky='w')
self.hash_result_text = tk.Text(tab, height=5, width=60)
self.hash_result_text.grid(row=3, column=1, padx=5, pady=5, sticky='we')
self.hash_result_text.config(state=tk.DISABLED)
def create_text_tab_content(self, tab):
# Encryption/Decryption Key
self.key_label = ttk.Label(tab, text='Encryption Key:')
self.key_label.grid(row=0, column=0, padx=5, pady=5, sticky='w')
self.key_entry = ttk.Entry(tab, width=30)
self.key_entry.grid(row=0, column=1, padx=5, pady=5, sticky='we')
# Text Input
self.text_label = ttk.Label(tab, text='Enter Text:')
self.text_label.grid(row=1, column=0, padx=5, pady=5, sticky='w')
self.text_input = tk.Text(tab, height=5, width=40)
self.text_input.grid(row=1, column=1, padx=5, pady=5, sticky='we')
# Encryption/Decryption Buttons
self.encrypt_button = ttk.Button(tab, text='Encrypt', command=self.encrypt_text)
self.encrypt_button.grid(row=2, column=0, padx=5, pady=5)
self.decrypt_button = ttk.Button(tab, text='Decrypt', command=self.decrypt_text)
self.decrypt_button.grid(row=2, column=1, padx=5, pady=5)
# Output Text
self.output_label = ttk.Label(tab, text='Output Text:')
self.output_label.grid(row=3, column=0, padx=5, pady=5, sticky='w')
self.output_text = tk.Text(tab, height=5, width=40)
self.output_text.grid(row=3, column=1, padx=5, pady=5, sticky='we')
self.output_text.config(state=tk.DISABLED)
def create_random_tab_content(self, tab):
# Data Type Selection
self.data_type_label = ttk.Label(tab, text='Select Data Type:')
self.data_type_label.grid(row=0, column=0, padx=5, pady=5, sticky='w')
self.data_type_var = tk.StringVar(value='string')
self.data_type_combo = ttk.Combobox(tab, textvariable=self.data_type_var, values=['string', 'integer', 'float'], state='readonly')
self.data_type_combo.grid(row=0, column=1, padx=5, pady=5, sticky='we')
# Length/Range Input
self.length_label = ttk.Label(tab, text='Length/Range:')
self.length_label.grid(row=1, column=0, padx=5, pady=5, sticky='w')
self.length_entry = ttk.Entry(tab, width=20)
self.length_entry.grid(row=1, column=1, padx=5, pady=5, sticky='we')
# Generate Button
self.generate_button = ttk.Button(tab, text='Generate', command=self.generate_random_data)
self.generate_button.grid(row=2, column=1, padx=5, pady=5)
# Output Data
self.data_label = ttk.Label(tab, text='Generated Data:')
self.data_label.grid(row=3, column=0, padx=5, pady=5, sticky='w')
self.data_text = tk.Text(tab, height=5, width=40)
self.data_text.grid(row=3, column=1, padx=5, pady=5, sticky='we')
self.data_text.config(state=tk.DISABLED)
def browse_file(self):
filename = filedialog.askopenfilename()
self.file_path_var.set(filename)
def calculate_hash(self):
filename = self.file_path_var.get()
algorithm = self.hash_algorithm_var.get()
if not filename:
messagebox.showerror("Error", "Please select a file.")
return
try:
hasher = hashlib.new(algorithm)
with open(filename, 'rb') as afile:
buf = afile.read(65536)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(65536)
hash_value = hasher.hexdigest()
self.hash_result_text.config(state=tk.NORMAL)
self.hash_result_text.delete('1.0', tk.END)
self.hash_result_text.insert(tk.END, hash_value)
self.hash_result_text.config(state=tk.DISABLED)
except Exception as e:
messagebox.showerror("Error", str(e))
def encrypt_text(self):
key = self.key_entry.get()
text = self.text_input.get('1.0', tk.END).strip()
if not key:
messagebox.showerror("Error", "Please enter an encryption key.")
return
if not text:
messagebox.showerror("Error", "Please enter text to encrypt.")
return
encrypted_text = ''.join([chr(ord(c) + ord(key[i % len(key)])) for i, c in enumerate(text)])
self.output_text.config(state=tk.NORMAL)
self.output_text.delete('1.0', tk.END)
self.output_text.insert(tk.END, encrypted_text)
self.output_text.config(state=tk.DISABLED)
def decrypt_text(self):
key = self.key_entry.get()
text = self.text_input.get('1.0', tk.END).strip()
if not key:
messagebox.showerror("Error", "Please enter an encryption key.")
return
if not text:
messagebox.showerror("Error", "Please enter text to decrypt.")
return
decrypted_text = ''.join([chr(ord(c) - ord(key[i % len(key)])) for i, c in enumerate(text)])
self.output_text.config(state=tk.NORMAL)
self.output_text.delete('1.0', tk.END)
self.output_text.insert(tk.END, decrypted_text)
self.output_text.config(state=tk.DISABLED)
def generate_random_data(self):
data_type = self.data_type_var.get()
length_range = self.length_entry.get()
try:
if data_type == 'string':
length = int(length_range)
random_data = ''.join(random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') for _ in range(length))
elif data_type == 'integer':
min_val, max_val = map(int, length_range.split(','))
random_data = str(random.randint(min_val, max_val))
elif data_type == 'float':
min_val, max_val = map(float, length_range.split(','))
random_data = str(random.uniform(min_val, max_val))
else:
raise ValueError("Invalid data type.")
self.data_text.config(state=tk.NORMAL)
self.data_text.delete('1.0', tk.END)
self.data_text.insert(tk.END, random_data)
self.data_text.config(state=tk.DISABLED)
except ValueError as e:
messagebox.showerror("Error", str(e))
except Exception as e:
messagebox.showerror("Error", str(e))
def show_details(self):
details_text = """
Vibrant Nexus is a versatile tool designed for various tasks:
1. **File Integrity Checker:**
- Allows users to select a file and calculate its hash using different algorithms (MD5, SHA1, SHA256, SHA512).
- This ensures file integrity by verifying that the hash value matches the original.
2. **Text Encryption/Decryption:**
- Enables users to encrypt and decrypt text using a key-based substitution cipher.
- The key is used to shift each character in the text, making it unreadable without the key.
3. **Random Data Generator:**
- Generates random data of different types (string, integer, float) based on user-defined parameters.
- For strings, the user specifies the length. For integers and floats, the user provides a range.
This application provides essential tools for security and data manipulation in a user-friendly interface.
"""
messagebox.showinfo("Details", details_text)
if __name__ == "__main__":
root = tk.Tk()
app = VibrantNexusApp(root)
root.mainloop()
👁️ Viewed: 8
Comments