<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freemwiki.com/index.php?action=history&amp;feed=atom&amp;title=Openai%2F696bd5cb-0b40-8009-a7e4-526bb5959a3d</id>
	<title>Openai/696bd5cb-0b40-8009-a7e4-526bb5959a3d - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freemwiki.com/index.php?action=history&amp;feed=atom&amp;title=Openai%2F696bd5cb-0b40-8009-a7e4-526bb5959a3d"/>
	<link rel="alternate" type="text/html" href="https://freemwiki.com/index.php?title=Openai/696bd5cb-0b40-8009-a7e4-526bb5959a3d&amp;action=history"/>
	<updated>2026-07-27T23:49:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://freemwiki.com/index.php?title=Openai/696bd5cb-0b40-8009-a7e4-526bb5959a3d&amp;diff=595772&amp;oldid=prev</id>
		<title>Lukegao: by freem.ai...</title>
		<link rel="alternate" type="text/html" href="https://freemwiki.com/index.php?title=Openai/696bd5cb-0b40-8009-a7e4-526bb5959a3d&amp;diff=595772&amp;oldid=prev"/>
		<updated>2026-01-18T05:21:37Z</updated>

		<summary type="html">&lt;p&gt;by freem.ai...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{{DISPLAYTITLE:Wi-Fi QR Code Script}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;This conversation was exported from ChatGPT&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{cite web|title=Wi-Fi QR Code Script|url=https://chatgpt.com/share/696bd5cb-0b40-8009-a7e4-526bb5959a3d|publisher=ChatGPT|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== gpt-5-2 ==&lt;br /&gt;
=== User: can you help me find a python script in github that create qr code that authenticate in a wifi , for exemple i have my … ===&lt;br /&gt;
can you help me find a python script in github that create qr code that authenticate in a wifi , for exemple i have my iphone , and it scan , and it connect to the wifi&lt;br /&gt;
&lt;br /&gt;
=== Assistant: Yes — here are some GitHub Python projects that generate Wi-Fi QR codes you can use to scan with your iPhone or any pho… ===&lt;br /&gt;
Yes — here are some GitHub Python projects that generate Wi-Fi QR codes you can use to scan with your iPhone (or any phone) to automatically connect to Wi-Fi. These generate standard Wi-Fi QR codes: when scanned by a phone’s camera, it understands the network SSID/password and can join automatically. GitHub&amp;lt;ref&amp;gt;{{cite web|title=GitHub|url=https://github.com/MelonSmasher/WiFiQRGen|publisher=github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== #### =====&lt;br /&gt;
&lt;br /&gt;
📦 [GitHub: lakhanmankani/wifi_qrcode_generator](GitHub: lakhanmankani/wifi_qrcode_generator)&lt;br /&gt;
A straightforward Python script that generates a Wi-Fi QR code using qrcode and Pillow. You can run it in Python or install as a package. GitHub&amp;lt;ref&amp;gt;{{cite web|title=GitHub|url=https://github.com/lakhanmankani/wifi_qrcode_generator|publisher=github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Features&lt;br /&gt;
* Generates a QR image for an SSID + password.&lt;br /&gt;
* Works with standard Wi-Fi formats (WPA, WEP, None).&lt;br /&gt;
* Easy to use in your own script.&lt;br /&gt;
&lt;br /&gt;
Basic usage example (from readme):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import wifi_qrcode_generator.generator&lt;br /&gt;
&lt;br /&gt;
qr_code = wifi_qrcode_generator.generator.wifi_qrcode(&lt;br /&gt;
    ssid=&amp;#039;MyNetwork&amp;#039;,&lt;br /&gt;
    hidden=False,&lt;br /&gt;
    authentication_type=&amp;#039;WPA&amp;#039;,&lt;br /&gt;
    password=&amp;#039;MyPassword123&amp;#039;&lt;br /&gt;
)&lt;br /&gt;
qr_code.make_image().save(&amp;#039;wifi.png&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
→ Scanning wifi.png with your iPhone camera connects to Wi-Fi. GitHub&amp;lt;ref&amp;gt;{{cite web|title=GitHub|url=https://github.com/lakhanmankani/wifi_qrcode_generator|publisher=github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 📦 [GitHub: vinodvidhole/wifi-qr-code (Notebook)](GitHub: vinodvidhole/wifi-qr-code (Notebook)) ======&lt;br /&gt;
A Python notebook that explains and demonstrates generating Wi-Fi QR codes. It’s more of an example/project you can adapt. GitHub&amp;lt;ref&amp;gt;{{cite web|title=GitHub|url=https://github.com/vinodvidhole/wifi-qr-code/blob/main/wifi-qr-code.ipynb|publisher=github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 📦 [GitHub: ustayready/qrwifi](GitHub: ustayready/qrwifi) ======&lt;br /&gt;
Another lightweight script that generates a QR PNG from SSID and password, using standard libraries. GitHub&amp;lt;ref&amp;gt;{{cite web|title=GitHub|url=https://github.com/ustayready/qrwifi|publisher=github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== If you want a minimal example without a full repo, you can use a gist that just does Wi-Fi QR codes: ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import pyqrcode&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
ssid = &amp;quot;YourNetwork&amp;quot;&lt;br /&gt;
pwd = &amp;quot;YourPassword&amp;quot;&lt;br /&gt;
protocol = &amp;quot;WPA&amp;quot;  # valid: WPA, WEP, nopass&lt;br /&gt;
&lt;br /&gt;
data = f&amp;quot;WIFI:S:{ssid};T:{protocol};P:{pwd};;&amp;quot;&lt;br /&gt;
qr = pyqrcode.create(data)&lt;br /&gt;
qr.png(f&amp;quot;{ssid}_wifi.png&amp;quot;, scale=5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates a PNG file that phones understand as a Wi-Fi network. Gist&amp;lt;ref&amp;gt;{{cite web|title=Gist|url=https://gist.github.com/GammaGames/7736c7741879e32b5ad2c8b587216445|publisher=gist.github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== When you encode a QR with the format &amp;lt;code&amp;gt;WIFI:S:SSID;T:WPA;P:PASSWORD;;&amp;lt;/code&amp;gt;, iOS and Android cameras will recognize it and offer to join the Wi-Fi network automatically. Gist&amp;lt;ref&amp;gt;{{cite web|title=Gist|url=https://gist.github.com/GammaGames/7736c7741879e32b5ad2c8b587216445|publisher=gist.github.com|access-date=2026-01-18}}&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
===== - These scripts don’t configure your router or network — they just encode your credentials into a standard QR format. =====&lt;br /&gt;
* You need to provide correct SSID and password in the script.&lt;br /&gt;
* When your iPhone scans the generated QR (from screen or print), it will prompt to join the network.&lt;br /&gt;
&lt;br /&gt;
If you want, I can also show you how to build a web interface or command-line tool around these scripts to generate QR codes easily!&lt;br /&gt;
&lt;br /&gt;
== gpt-5-2-thinking ==&lt;br /&gt;
=== User: can you create a python script that do exactly like this but it use tkinter with a nice userfriendly interface ===&lt;br /&gt;
can you create a python script that do exactly like this but it use tkinter with a nice userfriendly interface&lt;br /&gt;
&lt;br /&gt;
=== Assistant: Absolutely — here’s a single-file Python script that gives you a nice Tkinter GUI to generate a Wi-Fi QR code scan with… ===&lt;br /&gt;
Absolutely — here’s a single-file Python script that gives you a nice Tkinter GUI to generate a Wi-Fi QR code (scan with iPhone camera → it prompts to join the network).&lt;br /&gt;
&lt;br /&gt;
===== Install dependencies =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pip install qrcode[pil] pillow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== wifi_qr_gui.py =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import tkinter as tk&lt;br /&gt;
from tkinter import ttk, filedialog, messagebox&lt;br /&gt;
import qrcode&lt;br /&gt;
from PIL import Image, ImageTk&lt;br /&gt;
&lt;br /&gt;
def escape_wifi_text(s: str) -&amp;gt; str:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Escape special chars per common WiFi QR conventions.&lt;br /&gt;
    Many scanners expect \ for: \ ; , : &amp;quot;&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if s is None:&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    return (&lt;br /&gt;
        s.replace(&amp;quot;\\&amp;quot;, &amp;quot;\\\\&amp;quot;)&lt;br /&gt;
         .replace(&amp;quot;;&amp;quot;, r&amp;quot;\;&amp;quot;)&lt;br /&gt;
         .replace(&amp;quot;,&amp;quot;, r&amp;quot;\,&amp;quot;)&lt;br /&gt;
         .replace(&amp;quot;:&amp;quot;, r&amp;quot;\:&amp;quot;)&lt;br /&gt;
         .replace(&amp;#039;&amp;quot;&amp;#039;, r&amp;quot;\&amp;quot;&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
def build_wifi_payload(ssid: str, auth: str, password: str, hidden: bool) -&amp;gt; str:&lt;br /&gt;
    # auth: &amp;quot;WPA&amp;quot;, &amp;quot;WEP&amp;quot;, &amp;quot;nopass&amp;quot;&lt;br /&gt;
    ssid_e = escape_wifi_text(ssid.strip())&lt;br /&gt;
    pwd_e = escape_wifi_text(password)&lt;br /&gt;
&lt;br /&gt;
    # Standard format:&lt;br /&gt;
    # WIFI:S:&amp;lt;ssid&amp;gt;;T:&amp;lt;auth&amp;gt;;P:&amp;lt;password&amp;gt;;H:&amp;lt;hidden&amp;gt;;;&lt;br /&gt;
    # H is optional; include for clarity&lt;br /&gt;
    if auth == &amp;quot;nopass&amp;quot;:&lt;br /&gt;
        payload = f&amp;quot;WIFI:S:{ssid_e};T:nopass;P:;H:{&amp;#039;true&amp;#039; if hidden else &amp;#039;false&amp;#039;};;&amp;quot;&lt;br /&gt;
    else:&lt;br /&gt;
        payload = f&amp;quot;WIFI:S:{ssid_e};T:{auth};P:{pwd_e};H:{&amp;#039;true&amp;#039; if hidden else &amp;#039;false&amp;#039;};;&amp;quot;&lt;br /&gt;
    return payload&lt;br /&gt;
&lt;br /&gt;
class WifiQRApp(tk.Tk):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.title(&amp;quot;Wi-Fi QR Code Generator&amp;quot;)&lt;br /&gt;
        self.geometry(&amp;quot;780x520&amp;quot;)&lt;br /&gt;
        self.minsize(740, 480)&lt;br /&gt;
&lt;br /&gt;
        # App state&lt;br /&gt;
        self.qr_pil = None&lt;br /&gt;
        self.qr_tk = None&lt;br /&gt;
&lt;br /&gt;
        self._build_ui()&lt;br /&gt;
&lt;br /&gt;
    def _build_ui(self):&lt;br /&gt;
        # Style&lt;br /&gt;
        style = ttk.Style(self)&lt;br /&gt;
        try:&lt;br /&gt;
            self.tk.call(&amp;quot;tk&amp;quot;, &amp;quot;scaling&amp;quot;, 1.0)&lt;br /&gt;
        except Exception:&lt;br /&gt;
            pass&lt;br /&gt;
&lt;br /&gt;
        container = ttk.Frame(self, padding=16)&lt;br /&gt;
        container.pack(fill=&amp;quot;both&amp;quot;, expand=True)&lt;br /&gt;
&lt;br /&gt;
        # Layout: left form, right preview&lt;br /&gt;
        container.columnconfigure(0, weight=1)&lt;br /&gt;
        container.columnconfigure(1, weight=2)&lt;br /&gt;
        container.rowconfigure(0, weight=1)&lt;br /&gt;
&lt;br /&gt;
        left = ttk.Frame(container)&lt;br /&gt;
        right = ttk.Frame(container)&lt;br /&gt;
        left.grid(row=0, column=0, sticky=&amp;quot;nsew&amp;quot;, padx=(0, 12))&lt;br /&gt;
        right.grid(row=0, column=1, sticky=&amp;quot;nsew&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # ---- Left: Form ----&lt;br /&gt;
        title = ttk.Label(left, text=&amp;quot;Create a Wi-Fi QR code&amp;quot;, font=(&amp;quot;Segoe UI&amp;quot;, 16, &amp;quot;bold&amp;quot;))&lt;br /&gt;
        title.pack(anchor=&amp;quot;w&amp;quot;, pady=(0, 12))&lt;br /&gt;
&lt;br /&gt;
        form = ttk.Frame(left)&lt;br /&gt;
        form.pack(fill=&amp;quot;x&amp;quot;, pady=(0, 10))&lt;br /&gt;
&lt;br /&gt;
        # SSID&lt;br /&gt;
        ttk.Label(form, text=&amp;quot;Network name (SSID)&amp;quot;).grid(row=0, column=0, sticky=&amp;quot;w&amp;quot;)&lt;br /&gt;
        self.ssid_var = tk.StringVar()&lt;br /&gt;
        self.ssid_entry = ttk.Entry(form, textvariable=self.ssid_var)&lt;br /&gt;
        self.ssid_entry.grid(row=1, column=0, sticky=&amp;quot;ew&amp;quot;, pady=(4, 10))&lt;br /&gt;
&lt;br /&gt;
        # Auth&lt;br /&gt;
        ttk.Label(form, text=&amp;quot;Security&amp;quot;).grid(row=2, column=0, sticky=&amp;quot;w&amp;quot;)&lt;br /&gt;
        self.auth_var = tk.StringVar(value=&amp;quot;WPA&amp;quot;)&lt;br /&gt;
        self.auth_combo = ttk.Combobox(&lt;br /&gt;
            form,&lt;br /&gt;
            textvariable=self.auth_var,&lt;br /&gt;
            values=[&amp;quot;WPA&amp;quot;, &amp;quot;WEP&amp;quot;, &amp;quot;nopass&amp;quot;],&lt;br /&gt;
            state=&amp;quot;readonly&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
        self.auth_combo.grid(row=3, column=0, sticky=&amp;quot;ew&amp;quot;, pady=(4, 10))&lt;br /&gt;
        self.auth_combo.bind(&amp;quot;&amp;lt;&amp;lt;ComboboxSelected&amp;gt;&amp;gt;&amp;quot;, lambda e: self._sync_password_state())&lt;br /&gt;
&lt;br /&gt;
        # Password&lt;br /&gt;
        ttk.Label(form, text=&amp;quot;Password&amp;quot;).grid(row=4, column=0, sticky=&amp;quot;w&amp;quot;)&lt;br /&gt;
        self.pwd_var = tk.StringVar()&lt;br /&gt;
        self.pwd_entry = ttk.Entry(form, textvariable=self.pwd_var, show=&amp;quot;•&amp;quot;)&lt;br /&gt;
        self.pwd_entry.grid(row=5, column=0, sticky=&amp;quot;ew&amp;quot;, pady=(4, 6))&lt;br /&gt;
&lt;br /&gt;
        # Show password&lt;br /&gt;
        self.show_pwd_var = tk.BooleanVar(value=False)&lt;br /&gt;
        show_pwd = ttk.Checkbutton(&lt;br /&gt;
            form,&lt;br /&gt;
            text=&amp;quot;Show password&amp;quot;,&lt;br /&gt;
            variable=self.show_pwd_var,&lt;br /&gt;
            command=self._toggle_password_visibility&lt;br /&gt;
        )&lt;br /&gt;
        show_pwd.grid(row=6, column=0, sticky=&amp;quot;w&amp;quot;, pady=(0, 10))&lt;br /&gt;
&lt;br /&gt;
        # Hidden network&lt;br /&gt;
        self.hidden_var = tk.BooleanVar(value=False)&lt;br /&gt;
        hidden_cb = ttk.Checkbutton(form, text=&amp;quot;Hidden network (SSID not broadcast)&amp;quot;, variable=self.hidden_var)&lt;br /&gt;
        hidden_cb.grid(row=7, column=0, sticky=&amp;quot;w&amp;quot;, pady=(0, 12))&lt;br /&gt;
&lt;br /&gt;
        form.columnconfigure(0, weight=1)&lt;br /&gt;
&lt;br /&gt;
        # Buttons&lt;br /&gt;
        btns = ttk.Frame(left)&lt;br /&gt;
        btns.pack(fill=&amp;quot;x&amp;quot;, pady=(4, 0))&lt;br /&gt;
&lt;br /&gt;
        gen_btn = ttk.Button(btns, text=&amp;quot;Generate QR&amp;quot;, command=self.generate_qr)&lt;br /&gt;
        gen_btn.pack(side=&amp;quot;left&amp;quot;, fill=&amp;quot;x&amp;quot;, expand=True)&lt;br /&gt;
&lt;br /&gt;
        save_btn = ttk.Button(btns, text=&amp;quot;Save PNG…&amp;quot;, command=self.save_png)&lt;br /&gt;
        save_btn.pack(side=&amp;quot;left&amp;quot;, fill=&amp;quot;x&amp;quot;, expand=True, padx=(10, 0))&lt;br /&gt;
&lt;br /&gt;
        # Tip&lt;br /&gt;
        tip = ttk.Label(&lt;br /&gt;
            left,&lt;br /&gt;
            text=&amp;quot;Tip: On iPhone, open the Camera and scan the QR.\nIt should prompt: “Join &amp;lt;SSID&amp;gt;”.&amp;quot;,&lt;br /&gt;
            foreground=&amp;quot;#555&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
        tip.pack(anchor=&amp;quot;w&amp;quot;, pady=(14, 0))&lt;br /&gt;
&lt;br /&gt;
        # ---- Right: Preview ----&lt;br /&gt;
        preview_card = ttk.Frame(right, padding=12)&lt;br /&gt;
        preview_card.pack(fill=&amp;quot;both&amp;quot;, expand=True)&lt;br /&gt;
&lt;br /&gt;
        ttk.Label(preview_card, text=&amp;quot;Preview&amp;quot;, font=(&amp;quot;Segoe UI&amp;quot;, 12, &amp;quot;bold&amp;quot;)).pack(anchor=&amp;quot;w&amp;quot;, pady=(0, 8))&lt;br /&gt;
&lt;br /&gt;
        self.preview_area = tk.Canvas(preview_card, bg=&amp;quot;white&amp;quot;, highlightthickness=1, highlightbackground=&amp;quot;#ddd&amp;quot;)&lt;br /&gt;
        self.preview_area.pack(fill=&amp;quot;both&amp;quot;, expand=True)&lt;br /&gt;
&lt;br /&gt;
        self.payload_text = tk.Text(preview_card, height=3, wrap=&amp;quot;word&amp;quot;)&lt;br /&gt;
        self.payload_text.pack(fill=&amp;quot;x&amp;quot;, pady=(10, 0))&lt;br /&gt;
        self.payload_text.configure(state=&amp;quot;disabled&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        self._sync_password_state()&lt;br /&gt;
        self.ssid_entry.focus_set()&lt;br /&gt;
&lt;br /&gt;
        # Regenerate on Enter&lt;br /&gt;
        self.bind(&amp;quot;&amp;lt;Return&amp;gt;&amp;quot;, lambda e: self.generate_qr())&lt;br /&gt;
&lt;br /&gt;
        # Handle resizing of preview nicely&lt;br /&gt;
        self.preview_area.bind(&amp;quot;&amp;lt;Configure&amp;gt;&amp;quot;, lambda e: self._redraw_preview())&lt;br /&gt;
&lt;br /&gt;
    def _toggle_password_visibility(self):&lt;br /&gt;
        self.pwd_entry.configure(show=&amp;quot;&amp;quot; if self.show_pwd_var.get() else &amp;quot;•&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def _sync_password_state(self):&lt;br /&gt;
        auth = self.auth_var.get()&lt;br /&gt;
        if auth == &amp;quot;nopass&amp;quot;:&lt;br /&gt;
            self.pwd_entry.configure(state=&amp;quot;disabled&amp;quot;)&lt;br /&gt;
            self.pwd_var.set(&amp;quot;&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            self.pwd_entry.configure(state=&amp;quot;normal&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def _set_payload_display(self, payload: str):&lt;br /&gt;
        self.payload_text.configure(state=&amp;quot;normal&amp;quot;)&lt;br /&gt;
        self.payload_text.delete(&amp;quot;1.0&amp;quot;, &amp;quot;end&amp;quot;)&lt;br /&gt;
        self.payload_text.insert(&amp;quot;1.0&amp;quot;, payload)&lt;br /&gt;
        self.payload_text.configure(state=&amp;quot;disabled&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def generate_qr(self):&lt;br /&gt;
        ssid = self.ssid_var.get().strip()&lt;br /&gt;
        auth = self.auth_var.get().strip()&lt;br /&gt;
        password = self.pwd_var.get()&lt;br /&gt;
&lt;br /&gt;
        if not ssid:&lt;br /&gt;
            messagebox.showerror(&amp;quot;Missing SSID&amp;quot;, &amp;quot;Please enter a network name (SSID).&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        if auth in (&amp;quot;WPA&amp;quot;, &amp;quot;WEP&amp;quot;) and not password:&lt;br /&gt;
            messagebox.showerror(&amp;quot;Missing password&amp;quot;, f&amp;quot;Security is set to {auth}. Please enter the Wi-Fi password.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        payload = build_wifi_payload(ssid, auth, password, self.hidden_var.get())&lt;br /&gt;
        self._set_payload_display(payload)&lt;br /&gt;
&lt;br /&gt;
        # Build QR&lt;br /&gt;
        qr = qrcode.QRCode(&lt;br /&gt;
            version=None,&lt;br /&gt;
            error_correction=qrcode.constants.ERROR_CORRECT_M,&lt;br /&gt;
            box_size=10,&lt;br /&gt;
            border=4&lt;br /&gt;
        )&lt;br /&gt;
        qr.add_data(payload)&lt;br /&gt;
        qr.make(fit=True)&lt;br /&gt;
&lt;br /&gt;
        img = qr.make_image(fill_color=&amp;quot;black&amp;quot;, back_color=&amp;quot;white&amp;quot;).convert(&amp;quot;RGB&amp;quot;)&lt;br /&gt;
        self.qr_pil = img&lt;br /&gt;
        self._redraw_preview()&lt;br /&gt;
&lt;br /&gt;
    def _redraw_preview(self):&lt;br /&gt;
        self.preview_area.delete(&amp;quot;all&amp;quot;)&lt;br /&gt;
        if self.qr_pil is None:&lt;br /&gt;
            self.preview_area.create_text(&lt;br /&gt;
                10, 10, anchor=&amp;quot;nw&amp;quot;,&lt;br /&gt;
                text=&amp;quot;Generate a QR code to preview it here.&amp;quot;,&lt;br /&gt;
                fill=&amp;quot;#666&amp;quot;,&lt;br /&gt;
                font=(&amp;quot;Segoe UI&amp;quot;, 11)&lt;br /&gt;
            )&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        # Fit the QR into the canvas with padding&lt;br /&gt;
        cw = max(self.preview_area.winfo_width(), 1)&lt;br /&gt;
        ch = max(self.preview_area.winfo_height(), 1)&lt;br /&gt;
        pad = 20&lt;br /&gt;
        max_w = max(cw - 2 * pad, 50)&lt;br /&gt;
        max_h = max(ch - 2 * pad, 50)&lt;br /&gt;
&lt;br /&gt;
        img = self.qr_pil.copy()&lt;br /&gt;
        img.thumbnail((max_w, max_h), Image.Resampling.LANCZOS)&lt;br /&gt;
&lt;br /&gt;
        self.qr_tk = ImageTk.PhotoImage(img)&lt;br /&gt;
        x = cw // 2&lt;br /&gt;
        y = ch // 2&lt;br /&gt;
        self.preview_area.create_image(x, y, image=self.qr_tk, anchor=&amp;quot;center&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def save_png(self):&lt;br /&gt;
        if self.qr_pil is None:&lt;br /&gt;
            messagebox.showinfo(&amp;quot;Nothing to save&amp;quot;, &amp;quot;Generate a QR code first.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        ssid = self.ssid_var.get().strip() or &amp;quot;wifi_qr&amp;quot;&lt;br /&gt;
        default_name = f&amp;quot;{ssid}_wifi_qr.png&amp;quot;.replace(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        path = filedialog.asksaveasfilename(&lt;br /&gt;
            defaultextension=&amp;quot;.png&amp;quot;,&lt;br /&gt;
            filetypes=[(&amp;quot;PNG Image&amp;quot;, &amp;quot;*.png&amp;quot;)],&lt;br /&gt;
            initialfile=default_name,&lt;br /&gt;
            title=&amp;quot;Save QR code as PNG&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
        if not path:&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        try:&lt;br /&gt;
            self.qr_pil.save(path, format=&amp;quot;PNG&amp;quot;)&lt;br /&gt;
            messagebox.showinfo(&amp;quot;Saved&amp;quot;, f&amp;quot;Saved QR code to:\n{path}&amp;quot;)&lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            messagebox.showerror(&amp;quot;Save failed&amp;quot;, f&amp;quot;Could not save the file:\n{e}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    app = WifiQRApp()&lt;br /&gt;
    app.mainloop()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== How to use =====&lt;br /&gt;
# Run: python wifi_qr_gui.py&lt;br /&gt;
# Enter SSID, choose WPA/WEP/nopass, enter password if needed&lt;br /&gt;
# Click Generate QR&lt;br /&gt;
# Point your iPhone camera at the QR → it should offer to join the Wi-Fi&lt;br /&gt;
&lt;br /&gt;
If you want, I can also add: dark mode, copy QR to clipboard, auto-detect SSID on your computer, or a “print” layout.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ChatGPT Shares]]&lt;br /&gt;
[[Category:openai]]&lt;/div&gt;</summary>
		<author><name>Lukegao</name></author>
	</entry>
</feed>