Loading QR Generator
Initializing PyScript environment...
Advanced QR Code Generator
Website URL
WiFi Network
Plain Text
Contact Info
Website URL
Network Name (SSID)
Password
Security Type
WPA/WPA2
WEP
None (Open Network)
Text Content
Full Name
Phone Number
Email Address
Your QR Code
Download
Proudly created using AI and PyScript
from js import document, console import qrcode from io import BytesIO import base64 from pyodide.ffi import create_proxy # Store QR code data between functions qr_data = None tab_proxies = {} # Define all functions first def generate_qr(event): try: global qr_data url = document.getElementById("url-input").value if not url: show_error("Please enter a URL") return qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data(url) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") display_qr_code(img) show_success(f"QR code generated for: {url}") except Exception as e: show_error(f"URL QR generation error: {str(e)}") console.error(f"URL QR error: {e}") def generate_wifi_qr(event): try: global qr_data ssid = document.getElementById("wifi-ssid").value password = document.getElementById("wifi-password").value security = document.getElementById("wifi-security").value if not ssid: show_error("Please enter a network name") return wifi_config = f"WIFI:T:{security};S:{ssid};P:{password};;" qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data(wifi_config) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") display_qr_code(img) show_success(f"WiFi QR code generated for: {ssid}") except Exception as e: show_error(f"WiFi QR generation error: {str(e)}") console.error(f"WiFi QR error: {e}") def generate_text_qr(event): try: global qr_data text = document.getElementById("text-input").value if not text: show_error("Please enter some text") return qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data(text) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") display_qr_code(img) show_success("Text QR code generated") except Exception as e: show_error(f"Text QR generation error: {str(e)}") console.error(f"Text QR error: {e}") def generate_contact_qr(event): try: global qr_data name = document.getElementById("contact-name").value phone = document.getElementById("contact-phone").value email = document.getElementById("contact-email").value if not name: show_error("Please enter at least a name") return vcard = f"BEGIN:VCARD\nVERSION:3.0\nN:{name}\n" if phone: vcard += f"TEL:{phone}\n" if email: vcard += f"EMAIL:{email}\n" vcard += "END:VCARD" qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data(vcard) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") display_qr_code(img) show_success(f"Contact QR code generated for: {name}") except Exception as e: show_error(f"Contact QR generation error: {str(e)}") console.error(f"Contact QR error: {e}") def display_qr_code(img): try: global qr_data buffered = BytesIO() img.save(buffered, format="PNG") img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") img_element = document.getElementById("qrcode-image") img_element.src = f"data:image/png;base64,{img_str}" document.getElementById("qrcode-container").style.display = "block" qr_data = img_str except Exception as e: show_error(f"QR display error: {str(e)}") console.error(f"Display error: {e}") def download_qr(event): try: global qr_data if not qr_data: show_error("No QR code generated yet") return active_tab = document.querySelector(".tab-btn.active").getAttribute("data-tab") filename = "qrcode.png" if active_tab == "url": url = document.getElementById("url-input").value or "qrcode" filename = url.replace("https://", "").replace("http://", "").replace("/", "_")[:50] + ".png" elif active_tab == "wifi": ssid = document.getElementById("wifi-ssid").value or "wifi" filename = ssid.replace(" ", "_")[:50] + "_wifi.png" elif active_tab == "text": filename = "text_qrcode.png" elif active_tab == "contact": name = document.getElementById("contact-name").value or "contact" filename = name.replace(" ", "_")[:50] + "_contact.png" a = document.createElement("a") a.href = f"data:image/png;base64,{qr_data}" a.download = filename document.body.appendChild(a) a.click() document.body.removeChild(a) show_success(f"Downloaded: {filename}") except Exception as e: show_error(f"Download error: {str(e)}") console.error(f"Download error: {e}") def show_error(message): output_div = document.getElementById("output") output_div.innerHTML = f"❌ {message}" output_div.style.color = "#dc3545" def show_success(message): output_div = document.getElementById("output") output_div.innerHTML = f"✓ {message}" output_div.style.color = "#28a745" def switch_tab(event): try: target = event.target buttons = document.querySelectorAll(".tab-btn") containers = document.querySelectorAll(".qr-type-container") for btn in buttons: btn.classList.remove("active") for tab in containers: tab.classList.remove("active") target.classList.add("active") tab_id = target.getAttribute("data-tab") + "-tab" document.getElementById(tab_id).classList.add("active") except Exception as e: console.error(f"Tab switch error: {e}") show_error(f"Tab switch error: {str(e)}") # Now define setup functions that reference the above functions def setup_proxies(): global tab_proxies tab_proxies = { 'generate_qr': create_proxy(generate_qr), 'generate_wifi_qr': create_proxy(generate_wifi_qr), 'generate_text_qr': create_proxy(generate_text_qr), 'generate_contact_qr': create_proxy(generate_contact_qr), 'download_qr': create_proxy(download_qr), 'switch_tab': create_proxy(switch_tab) } document.py_proxies = tab_proxies def setup_tabs(): tab_buttons = document.querySelectorAll(".tab-btn") for btn in tab_buttons: btn.addEventListener("click", tab_proxies['switch_tab']) def init(): try: setup_proxies() setup_tabs() document.getElementById("generate-btn").addEventListener("click", tab_proxies['generate_qr']) document.getElementById("generate-wifi-btn").addEventListener("click", tab_proxies['generate_wifi_qr']) document.getElementById("generate-text-btn").addEventListener("click", tab_proxies['generate_text_qr']) document.getElementById("generate-contact-btn").addEventListener("click", tab_proxies['generate_contact_qr']) document.getElementById("download-btn").addEventListener("click", tab_proxies['download_qr']) document.getElementById("loading").style.display = "none" document.getElementById("content").style.display = "block" except Exception as e: console.error(f"Initialization error: {e}") loading_div = document.getElementById("loading") loading_div.innerHTML = "" p = document.createElement("p") p.style.color = "red" p.textContent = f"Initialization failed: {e}" loading_div.appendChild(p) init()