test2023h5 commited on
Commit
7f871a7
·
verified ·
1 Parent(s): a7021e3

Upload 3 files

Browse files
app.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import simplestart as ss
2
+
3
+ ss.md('''
4
+ # Introduction
5
+
6
+ Some demos of SimpleStart
7
+
8
+ ''')
pages/001 link demo.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### A link to download Qrcode
2
+
3
+ # this is demo is based on the topic discussed on stackoverflow
4
+ # https://stackoverflow.com/questions/78045476/streamlit-re-runs-app-on-button-click-delaying-download/79008691#79008691
5
+
6
+ import simplestart as ss
7
+
8
+ ss.md('''
9
+ #### In this demo, you can change the URL in the input to generate a QR code image. Click the link below to download it.
10
+ ---
11
+ ''')
12
+
13
+ import qrcode
14
+ from io import BytesIO
15
+ from PIL import Image
16
+
17
+ #api
18
+ def generate_qr_code(link): # Generate QR Code
19
+ qr = qrcode.QRCode(
20
+ version=1.00,
21
+ error_correction=qrcode.constants.ERROR_CORRECT_L,
22
+ box_size=10,
23
+ border=2,
24
+ )
25
+ qr.add_data(link)
26
+ qr.make(fit=True)
27
+ img = qr.make_image(fill_color="black", back_color="white")
28
+ return img
29
+
30
+
31
+ def download_qr_code(img): # Convert PIL image to bytes
32
+ img_bytes = BytesIO()
33
+ img.save(img_bytes, format='PNG')
34
+ img_bytes.seek(0)
35
+ return img_bytes
36
+
37
+ #event handler
38
+ def text_change(event):
39
+ generate_img()
40
+
41
+ def generate_img():
42
+ link = link_text.value
43
+ qr_img = generate_qr_code(link)
44
+ img = download_qr_code(qr_img)
45
+ myimg.image = img
46
+
47
+ #ui
48
+ ss.write("# QR Code Generator")
49
+ link_text = ss.text_input("http://www.simplestart.cc", label = "Enter a link:", onchange = text_change, max_width = 600)
50
+ myimg = ss.image("", title='Generated QR Code', width=300, border= True)
51
+
52
+ generate_img()
53
+
54
+ ss.link("Download QR Code", myimg.image, file_name = "qr_code.png", mime = "image/png")
55
+
56
+
57
+ ss.space()
58
+ ss.md('''
59
+ ---
60
+ ### Related References:
61
+ [Streamlit Re-runs App on Button Click, Delaying Download](https://stackoverflow.com/questions/78045476/streamlit-re-runs-app-on-button-click-delaying-download) (stackoverflow)
62
+
63
+ [source code of this demo](https://github.com/readever/simplestart/tree/main/demo/stackoverflow/a%20link%20to%20download%20qrcode) (github)
64
+ ''')
pages/002 Bokeh scatter bekoh plot.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Scatter Plot with Slider C
2
+
3
+ # this is demo is based on the topic discussed on stackoverflow
4
+ # https://stackoverflow.com/questions/78542719/streamlit-slider-will-refresh-the-whole-page-and-go-to-the-top
5
+
6
+ import simplestart as ss
7
+ from bokeh.plotting import figure
8
+ from bokeh.layouts import column
9
+ from bokeh.models import ColumnDataSource, CustomJS, Slider
10
+ from bokeh.resources import CDN
11
+ from bokeh.embed import file_html, components
12
+
13
+
14
+ ### ui
15
+ ss.md('''
16
+ #### This example uses a slider outside of Bokeh to change the chart data, combining the smoothness of JavaScript with the convenience of Python.
17
+ ---
18
+ ''')
19
+
20
+ # Title for the application
21
+ ss.write('# Bernoulli Distribution Visualization')
22
+
23
+
24
+ def plot(p=0.5):
25
+ x = [0, 1]
26
+ y = [1 - p, p]
27
+
28
+ colors = ['#1f77b4', '#ff7f0e']
29
+ source = ColumnDataSource(data=dict(x=x, y=y, color=colors))
30
+ source.name = "mysource"
31
+
32
+ fig = figure(
33
+ title="Bernoulli Distribution",
34
+ x_axis_label="Outcome",
35
+ y_axis_label="Probability",
36
+ )
37
+
38
+ fig.title.align = "center"
39
+
40
+ fig.vbar(x="x", top="y", width=0.5, color="color", source=source)
41
+
42
+ return file_html(fig, CDN, "Bernoulli Distribution")
43
+
44
+ ss.htmlview(plot())
45
+
46
+ def change_value(value):
47
+ js = f'''
48
+ const iframe = document.getElementById('myIframe');
49
+
50
+ const innerWindow = iframe.contentWindow;
51
+
52
+ const bokehDoc = iframe.contentWindow.Bokeh.documents[0];
53
+ const source = bokehDoc.get_model_by_name("mysource");
54
+ //console.log("source", source)
55
+
56
+ // updata source data
57
+ var value = {value};
58
+ source.data['y'] = [1 - value, parseFloat(value)];
59
+ source.change.emit();
60
+ '''
61
+ return js
62
+
63
+
64
+ def slider_change(event):
65
+ ss.exec_js(change_value(event.value))
66
+
67
+ ss.slider('Probability of Success \(p\)', 0.0, 1.0, 0.5, onchange=slider_change, triggerOnUpdate = True)
68
+
69
+
70
+ ss.space()
71
+ ss.md('''
72
+ ---
73
+ ### Related References:
74
+ [Streamlit Re-runs App on Button Click, Delaying Download](https://stackoverflow.com/questions/78542719/streamlit-slider-will-refresh-the-whole-page-and-go-to-the-top) (stackoverflow)
75
+
76
+ [source code of this demo](https://github.com/readever/simplestart/tree/main/demo/stackoverflow/slider%20outside%20of%20bekoh) (github)
77
+ ''')