Spaces:
Running
Running
### A link to download Qrcode | |
# this is demo is based on the topic discussed on stackoverflow | |
# https://stackoverflow.com/questions/78045476/streamlit-re-runs-app-on-button-click-delaying-download/79008691#79008691 | |
import simplestart as ss | |
ss.md(''' | |
#### In this demo, you can change the URL in the input to generate a QR code image. Click the link below to download it. | |
--- | |
''') | |
import qrcode | |
from io import BytesIO | |
from PIL import Image | |
#api | |
def generate_qr_code(link): # Generate QR Code | |
qr = qrcode.QRCode( | |
version=1.00, | |
error_correction=qrcode.constants.ERROR_CORRECT_L, | |
box_size=10, | |
border=2, | |
) | |
qr.add_data(link) | |
qr.make(fit=True) | |
img = qr.make_image(fill_color="black", back_color="white") | |
return img | |
def download_qr_code(img): # Convert PIL image to bytes | |
img_bytes = BytesIO() | |
img.save(img_bytes, format='PNG') | |
img_bytes.seek(0) | |
return img_bytes | |
#event handler | |
def text_change(event): | |
generate_img() | |
def generate_img(): | |
link = link_text.value | |
qr_img = generate_qr_code(link) | |
img = download_qr_code(qr_img) | |
myimg.image = img | |
#ui | |
ss.write("# QR Code Generator") | |
link_text = ss.text_input("http://www.simplestart.cc", label = "Enter a link:", onchange = text_change, max_width = 600) | |
myimg = ss.image("", title='Generated QR Code', width=300, border= True) | |
generate_img() | |
ss.link("Download QR Code", myimg.image, file_name = "qr_code.png", mime = "image/png") | |
ss.space() | |
ss.md(''' | |
--- | |
### Related References: | |
[Streamlit Re-runs App on Button Click, Delaying Download](https://stackoverflow.com/questions/78045476/streamlit-re-runs-app-on-button-click-delaying-download) (stackoverflow) | |
[source code of this demo](https://github.com/readever/simplestart/tree/main/demo/stackoverflow/a%20link%20to%20download%20qrcode) (github) | |
''') |