-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPyScript_General-pyscript-ltk_1228676369953587233.html
More file actions
308 lines (290 loc) · 190 KB
/
PyScript_General-pyscript-ltk_1228676369953587233.html
File metadata and controls
308 lines (290 loc) · 190 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
<!DOCTYPE html>
<html lang="en"><head><title>PyScript 💻 - pyscript-ltk</title><meta charset="utf-8"/><meta content="width=device-width" name="viewport"/><style>@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-normal-400.woff2");font-family:gg sans;font-weight:400;font-style:normal}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-normal-500.woff2");font-family:gg sans;font-weight:500;font-style:normal}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-normal-600.woff2");font-family:gg sans;font-weight:600;font-style:normal}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-normal-700.woff2");font-family:gg sans;font-weight:700;font-style:normal}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-normal-800.woff2");font-family:gg sans;font-weight:800;font-style:normal}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-italic-400.woff2");font-family:gg sans;font-weight:400;font-style:italic}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-italic-500.woff2");font-family:gg sans;font-weight:500;font-style:italic}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-italic-600.woff2");font-family:gg sans;font-weight:600;font-style:italic}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-italic-700.woff2");font-family:gg sans;font-weight:700;font-style:italic}@font-face{src:url("https://cdn.jsdelivr.net/gh/Tyrrrz/DiscordFonts@master/ggsans-italic-800.woff2");font-family:gg sans;font-weight:800;font-style:italic}html,body{margin:0;padding:0;background-color:#ffffff;color:#23262a;font-family:"gg sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:17px;font-weight:500;scroll-behavior:smooth}a{color:#0068e0;text-decoration:none}a:hover{text-decoration:underline}img{object-fit:contain;image-rendering:high-quality;image-rendering:-webkit-optimize-contrast}.preamble{display:grid;grid-template-columns:auto 1fr;max-width:100%;padding:1rem}.preamble__guild-icon-container{grid-column:1}.preamble__guild-icon{max-width:88px;max-height:88px}.preamble__entries-container{grid-column:2;margin-left:1rem}.preamble__entry{margin-bottom:0.15rem;color:#2f3136;font-size:1.4rem}.preamble__entry--small{font-size:1rem}.chatlog{padding:1rem 0;width:100%;border-top:1px solid #eceeef;border-bottom:1px solid #eceeef}.chatlog__message-group{margin-bottom:1rem}.chatlog__message-container{background-color:transparent;transition:background-color 1s ease}.chatlog__message-container--highlighted{background-color:rgba(114,137,218,0.2)}.chatlog__message-container--pinned{background-color:rgba(249,168,37,0.05)}.chatlog__message{display:grid;grid-template-columns:auto 1fr;padding:0.15rem 0;direction:ltr;unicode-bidi:bidi-override}.chatlog__message:hover{background-color:#fafafa}.chatlog__message:hover .chatlog__short-timestamp{display:block}.chatlog__message-aside{grid-column:1;width:72px;padding:0.15rem 0.15rem 0 0.15rem;text-align:center}.chatlog__reply-symbol{height:10px;margin:6px 4px 4px 36px;border-left:2px solid #c7ccd1;border-top:2px solid #c7ccd1;border-radius:8px 0 0 0}.chatlog__avatar{width:40px;height:40px;border-radius:50%}.chatlog__short-timestamp{display:none;color:#5e6772;font-size:0.75rem;font-weight:500;direction:ltr;unicode-bidi:bidi-override}.chatlog__message-primary{grid-column:2;min-width:0}.chatlog__reply{display:flex;margin-bottom:0.15rem;align-items:center;color:#5f5f60;font-size:0.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chatlog__reply-avatar{width:16px;height:16px;margin-right:0.25rem;border-radius:50%}.chatlog__reply-author{margin-right:0.3rem;font-weight:600}.chatlog__reply-content{overflow:hidden;text-overflow:ellipsis}.chatlog__reply-link{cursor:pointer}.chatlog__reply-link *{display:inline;pointer-events:none}.chatlog__reply-link .chatlog__markdown-quote{display:inline}.chatlog__reply-link .chatlog__markdown-pre{display:inline}.chatlog__reply-link:hover{color:#2f3136}.chatlog__reply-link:hover *:not(.chatlog__markdown-spoiler){color:inherit}.chatlog__reply-edited-timestamp{margin-left:0.25rem;color:#5e6772;font-size:0.75rem;font-weight:500;direction:ltr;unicode-bidi:bidi-override}.chatlog__system-notification-icon{width:18px;height:18px}.chatlog__system-notification-author{font-weight:600;color:#2f3136}.chatlog__system-notification-content{color:#5e6772}.chatlog__system-notification-link{font-weight:500;color:#2f3136}.chatlog__system-notification-timestamp{margin-left:0.3rem;color:#5e6772;font-size:0.75rem;font-weight:500;direction:ltr;unicode-bidi:bidi-override}.chatlog__system-notification-timestamp a{color:inherit}.chatlog__header{margin-bottom:0.1rem}.chatlog__author{font-weight:600;color:#2f3136}.chatlog__author-tag{position:relative;top:-0.1rem;margin-left:0.3rem;padding:0.05rem 0.3rem;border-radius:3px;background-color:#5865F2;color:#ffffff;font-size:0.625rem;font-weight:500;line-height:1.3}.chatlog__timestamp{margin-left:0.3rem;color:#5e6772;font-size:0.75rem;font-weight:500;direction:ltr;unicode-bidi:bidi-override}.chatlog__timestamp a{color:inherit}.chatlog__content{padding-right:1rem;font-size:0.95rem;word-wrap:break-word}.chatlog__edited-timestamp{margin-left:0.15rem;color:#5e6772;font-size:0.75rem;font-weight:500}.chatlog__attachment{position:relative;width:fit-content;margin-top:0.3rem;border-radius:3px;overflow:hidden}.chatlog__attachment--hidden{cursor:pointer;box-shadow:0 0 1px 1px rgba(0,0,0,0.1)}.chatlog__attachment--hidden *{pointer-events:none}.chatlog__attachment-spoiler-caption{display:none;position:absolute;left:50%;top:50%;z-index:999;padding:0.4rem 0.8rem;border-radius:20px;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.9);color:#dcddde;font-size:0.9rem;font-weight:600;letter-spacing:0.05rem}.chatlog__attachment--hidden .chatlog__attachment-spoiler-caption{display:block}.chatlog__attachment--hidden:hover .chatlog__attachment-spoiler-caption{color:#fff}.chatlog__attachment-media{max-width:45vw;max-height:500px;vertical-align:top;border-radius:3px}.chatlog__attachment--hidden .chatlog__attachment-media{filter:blur(44px)}.chatlog__attachment-generic{max-width:520px;width:100%;height:40px;padding:10px;border:1px solid #ebedef;border-radius:3px;background-color:#f2f3f5;overflow:hidden}.chatlog__attachment--hidden .chatlog__attachment-generic{filter:blur(44px)}.chatlog__attachment-generic-icon{float:left;width:30px;height:100%;margin-right:10px}.chatlog__attachment-generic-size{color:#72767d;font-size:12px}.chatlog__attachment-generic-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.chatlog__embed{display:flex;margin-top:0.3rem;max-width:520px}.chatlog__embed-color-pill{flex-shrink:0;width:0.25rem;border-top-left-radius:3px;border-bottom-left-radius:3px}.chatlog__embed-color-pill--default{background-color:rgba(227,229,232,1)}.chatlog__embed-content-container{display:flex;flex-direction:column;padding:0.5rem 0.6rem;border:1px solid rgba(204,204,204,0.3);border-top-right-radius:3px;border-bottom-right-radius:3px;background-color:rgba(249,249,249,0.3)}.chatlog__embed-content{display:flex;width:100%}.chatlog__embed-text{flex:1}.chatlog__embed-author-container{display:flex;margin-bottom:0.5rem;align-items:center}.chatlog__embed-author-icon{width:20px;height:20px;margin-right:0.5rem;border-radius:50%}.chatlog__embed-author{color:#4f545c;font-size:0.875rem;font-weight:600;direction:ltr;unicode-bidi:bidi-override}.chatlog__embed-author-link{color:#4f545c}.chatlog__embed-title{margin-bottom:0.5rem;color:#4f545c;font-size:0.875rem;font-weight:600}.chatlog__embed-description{color:#2e3338;font-weight:500;font-size:0.85rem}.chatlog__embed-fields{display:flex;flex-wrap:wrap;gap:0 0.5rem}.chatlog__embed-field{flex:0;min-width:100%;max-width:506px;padding-top:0.6rem;font-size:0.875rem}.chatlog__embed-field--inline{flex:1;flex-basis:auto;min-width:50px}.chatlog__embed-field-name{margin-bottom:0.2rem;color:#36393e;font-weight:600}.chatlog__embed-field-value{color:#2e3338;font-weight:500}.chatlog__embed-thumbnail{flex:0;max-width:80px;max-height:80px;margin-left:1.2rem;border-radius:3px}.chatlog__embed-images{display:grid;margin-top:0.6rem;grid-template-columns:repeat(2,1fr);gap:0.25rem}.chatlog__embed-images--single{display:block}.chatlog__embed-image{object-fit:cover;object-position:center;max-width:500px;max-height:400px;width:100%;height:100%;border-radius:3px}.chatlog__embed-footer{margin-top:0.6rem;color:#2e3338}.chatlog__embed-footer-icon{width:20px;height:20px;margin-right:0.2rem;border-radius:50%;vertical-align:middle}.chatlog__embed-footer-text{vertical-align:middle;font-size:0.75rem;font-weight:500}.chatlog__embed-invite-container{min-width:320px;padding:0.6rem 0.7rem;border:1px solid rgba(204,204,204,0.3);border-radius:3px;background-color:rgba(249,249,249,0.3)}.chatlog__embed-invite-title{margin:0 0 0.8rem 0;color:#4f5660;font-size:0.75rem;font-weight:700;text-transform:uppercase}.chatlog__embed-invite{display:flex}.chatlog__embed-invite-guild-icon{width:50px;height:50px;border-radius:0.85rem}.chatlog__embed-invite-info{margin-left:1rem}.chatlog__embed-invite-guild-name{color:#36393e;font-weight:600}.chatlog__embed-invite-guild-name a{color:inherit}.chatlog__embed-invite-channel-icon{width:18px;height:18px;vertical-align:bottom}.chatlog__embed-invite-channel-name{font-size:0.9rem;font-weight:600}.chatlog__embed-generic-image{object-fit:contain;object-position:left;max-width:45vw;max-height:500px;vertical-align:top;border-radius:3px}.chatlog__embed-generic-video{object-fit:contain;object-position:left;max-width:45vw;max-height:500px;vertical-align:top;border-radius:3px}.chatlog__embed-generic-gifv{object-fit:contain;object-position:left;max-width:45vw;max-height:500px;vertical-align:top;border-radius:3px}.chatlog__embed-spotify{border:0}.chatlog__embed-twitch{border:0}.chatlog__embed-youtube-container{margin-top:0.6rem}.chatlog__embed-youtube{border:0;border-radius:3px}.chatlog__sticker{width:180px;height:180px}.chatlog__sticker--media{max-width:100%;max-height:100%}.chatlog__reactions{display:flex}.chatlog__reaction{display:flex;margin:0.35rem 0.1rem 0.1rem 0;padding:0.125rem 0.375rem;border:1px solid transparent;border-radius:8px;background-color:#f2f3f5;align-items:center}.chatlog__reaction:hover{border:1px solid rgba(0,0,0,0.2);background-color:white}.chatlog__reaction-count{min-width:9px;margin-left:0.35rem;color:#4f5660;font-size:0.875rem}.chatlog__reaction:hover .chatlog__reaction-count{color:#2e3338}.chatlog__markdown{max-width:100%;line-height:1.3;overflow-wrap:break-word}.chatlog__markdown h1{margin:1rem 0 0.5rem;color:#060607;font-size:1.5rem;line-height:1}.chatlog__markdown h2{margin:1rem 0 0.5rem;color:#060607;font-size:1.25rem;line-height:1}.chatlog__markdown h3{margin:1rem 0 0.5rem;color:#060607;font-size:1rem;line-height:1}.chatlog__markdown h1:first-child,h2:first-child,h3:first-child{margin-top:0.5rem}.chatlog__markdown ul,ol{margin:0 0 0 1rem;padding:0}.chatlog__markdown-preserve{white-space:pre-wrap}.chatlog__markdown-spoiler{background-color:rgba(0,0,0,0.1);padding:0 2px;border-radius:3px}.chatlog__markdown-spoiler--hidden{cursor:pointer;background-color:#b9bbbe;color:rgba(0,0,0,0)}.chatlog__markdown-spoiler--hidden:hover{background-color:rgba(185,187,190,0.8)}.chatlog__markdown-spoiler--hidden::selection{color:rgba(0,0,0,0)}.chatlog__markdown-quote{display:flex;margin:0.05rem 0}.chatlog__markdown-quote-border{margin-right:0.5rem;border:2px solid #c7ccd1;border-radius:3px}.chatlog__markdown-pre{background-color:#f9f9f9;font-family:"Consolas","Courier New",Courier,monospace;font-size:0.85rem;text-decoration:inherit}.chatlog__markdown-pre--multiline{display:block;margin-top:0.25rem;padding:0.5rem;border:2px solid #f3f3f3;border-radius:5px;color:#657b83}.chatlog__markdown-pre--multiline.hljs{background-color:#f9f9f9;color:#657b83}.chatlog__markdown-pre--inline{display:inline-block;padding:2px;border-radius:3px}.chatlog__markdown-mention{border-radius:3px;padding:0 2px;background-color:rgba(88,101,242,.15);color:#505cdc;font-weight:500}.chatlog__markdown-mention:hover{background-color:#5865f2;color:#ffffff}.chatlog__markdown-timestamp{background-color:rgba(0,0,0,0.1);padding:0 2px;border-radius:3px}.chatlog__emoji{width:1.325rem;height:1.325rem;margin:0 0.06rem;vertical-align:-0.4rem}.chatlog__emoji--small{width:1rem;height:1rem}.chatlog__emoji--large{width:2.8rem;height:2.8rem}.postamble{padding:1.25rem}.postamble__entry{color:#2f3136}</style><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/solarized-light.min.css" rel="stylesheet"/><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js"></script><script>document.addEventListener('DOMContentLoaded',()=>{document.querySelectorAll('.chatlog__markdown-pre--multiline').forEach(e=>hljs.highlightBlock(e));});</script><script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.8.1/lottie.min.js"></script><script>document.addEventListener('DOMContentLoaded',()=>{document.querySelectorAll('.chatlog__sticker--media[data-source]').forEach(e=>{const anim=lottie.loadAnimation({container:e,renderer:'svg',loop:true,autoplay:true,path:e.getAttribute('data-source')});anim.addEventListener('data_failed',()=>e.innerHTML='<strong>[Sticker cannot be rendered]</strong>');});});</script><script>function scrollToMessage(event,id){const element=document.getElementById('chatlog__message-container-'+id);if(!element)
return;event.preventDefault();element.classList.add('chatlog__message-container--highlighted');window.scrollTo({top:element.getBoundingClientRect().top-document.body.getBoundingClientRect().top-(window.innerHeight/2),behavior:'smooth'});window.setTimeout(()=>element.classList.remove('chatlog__message-container--highlighted'),2000);}
function showSpoiler(event,element){if(!element)
return;if(element.classList.contains('chatlog__attachment--hidden')){event.preventDefault();element.classList.remove('chatlog__attachment--hidden');}
if(element.classList.contains('chatlog__markdown-spoiler--hidden')){event.preventDefault();element.classList.remove('chatlog__markdown-spoiler--hidden');}}</script><svg style="display:none" xmlns="http://www.w3.org/2000/svg"><defs><symbol id="attachment-icon" viewbox="0 0 720 960"><path d="M50,935a25,25,0,0,1-25-25V50A25,25,0,0,1,50,25H519.6L695,201.32V910a25,25,0,0,1-25,25Z" fill="#f4f5fb"></path><path d="M509.21,50,670,211.63V910H50V50H509.21M530,0H50A50,50,0,0,0,0,50V910a50,50,0,0,0,50,50H670a50,50,0,0,0,50-50h0V191Z" fill="#7789c4"></path><path d="M530,215a25,25,0,0,1-25-25V50a25,25,0,0,1,16.23-23.41L693.41,198.77A25,25,0,0,1,670,215Z" fill="#f4f5fb"></path><path d="M530,70.71,649.29,190H530V70.71M530,0a50,50,0,0,0-50,50V190a50,50,0,0,0,50,50H670a50,50,0,0,0,50-50Z" fill="#7789c4"></path></symbol><symbol id="join-icon" viewbox="0 0 18 18"><path d="m0 8h14.2l-3.6-3.6 1.4-1.4 6 6-6 6-1.4-1.4 3.6-3.6h-14.2" fill="#3ba55c"></path></symbol><symbol id="leave-icon" viewbox="0 0 18 18"><path d="m3.8 8 3.6-3.6-1.4-1.4-6 6 6 6 1.4-1.4-3.6-3.6h14.2v-2" fill="#ed4245"></path></symbol><symbol id="call-icon" viewbox="0 0 18 18"><path d="M17.7163041 15.36645368c-.0190957.02699568-1.9039523 2.6680735-2.9957762 2.63320406-3.0676659-.09785935-6.6733809-3.07188394-9.15694343-5.548738C3.08002193 9.9740657.09772497 6.3791404 0 3.3061316v-.024746C0 2.2060575 2.61386252.3152347 2.64082114.2972376c.7110335-.4971705 1.4917101-.3149497 1.80959713.1372281.19320342.2744561 2.19712724 3.2811005 2.42290565 3.6489167.09884826.1608492.14714912.3554431.14714912.5702838 0 .2744561-.07975258.5770327-.23701117.8751101-.1527655.2902036-.65262318 1.1664385-.89862055 1.594995.2673396.3768148.94804468 1.26429792 2.351016 2.66357424 1.39173858 1.39027775 2.28923588 2.07641807 2.67002628 2.34187563.4302146-.2452108 1.3086162-.74238132 1.5972981-.89423205.5447887-.28682915 1.0907006-.31944893 1.4568885-.08661115.3459689.2182151 3.3383754 2.21027167 3.6225641 2.41611376.2695862.19234426.4144887.5399137.4144887.91672846 0 .2969525-.089862.61190215-.2808189.88523346" fill="#3ba55c" fill-rule="evenodd"></path></symbol><symbol id="pencil-icon" viewbox="0 0 18 18"><path d="m0 14.25v3.75h3.75l11.06-11.06-3.75-3.75zm17.71-10.21c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75z" fill="#99aab5"></path></symbol><symbol id="pin-icon" viewbox="0 0 18 18"><path d="m16.908 8.39684-8.29587-8.295827-1.18584 1.184157 1.18584 1.18584-4.14834 4.1475v.00167l-1.18583-1.18583-1.185 1.18583 3.55583 3.55502-4.740831 4.74 1.185001 1.185 4.74083-4.74 3.55581 3.555 1.185-1.185-1.185-1.185 4.1475-4.14836h.0009l1.185 1.185z" fill="#b9bbbe"></path></symbol><symbol id="channel-icon" viewbox="0 0 24 24"><path d="M5.88657 21C5.57547 21 5.3399 20.7189 5.39427 20.4126L6.00001 17H2.59511C2.28449 17 2.04905 16.7198 2.10259 16.4138L2.27759 15.4138C2.31946 15.1746 2.52722 15 2.77011 15H6.35001L7.41001 9H4.00511C3.69449 9 3.45905 8.71977 3.51259 8.41381L3.68759 7.41381C3.72946 7.17456 3.93722 7 4.18011 7H7.76001L8.39677 3.41262C8.43914 3.17391 8.64664 3 8.88907 3H9.87344C10.1845 3 10.4201 3.28107 10.3657 3.58738L9.76001 7H15.76L16.3968 3.41262C16.4391 3.17391 16.6466 3 16.8891 3H17.8734C18.1845 3 18.4201 3.28107 18.3657 3.58738L17.76 7H21.1649C21.4755 7 21.711 7.28023 21.6574 7.58619L21.4824 8.58619C21.4406 8.82544 21.2328 9 20.9899 9H17.41L16.35 15H19.7549C20.0655 15 20.301 15.2802 20.2474 15.5862L20.0724 16.5862C20.0306 16.8254 19.8228 17 19.5799 17H16L15.3632 20.5874C15.3209 20.8261 15.1134 21 14.8709 21H13.8866C13.5755 21 13.3399 20.7189 13.3943 20.4126L14 17H8.00001L7.36325 20.5874C7.32088 20.8261 7.11337 21 6.87094 21H5.88657ZM9.41045 9L8.35045 15H14.3504L15.4104 9H9.41045Z" fill="#b9bbbe"></path></symbol><symbol id="thread-icon" viewbox="0 0 24 24"><path d="M5.43309 21C5.35842 21 5.30189 20.9325 5.31494 20.859L5.99991 17H2.14274C2.06819 17 2.01168 16.9327 2.02453 16.8593L2.33253 15.0993C2.34258 15.0419 2.39244 15 2.45074 15H6.34991L7.40991 9H3.55274C3.47819 9 3.42168 8.93274 3.43453 8.85931L3.74253 7.09931C3.75258 7.04189 3.80244 7 3.86074 7H7.75991L8.45234 3.09903C8.46251 3.04174 8.51231 3 8.57049 3H10.3267C10.4014 3 10.4579 3.06746 10.4449 3.14097L9.75991 7H15.7599L16.4523 3.09903C16.4625 3.04174 16.5123 3 16.5705 3H18.3267C18.4014 3 18.4579 3.06746 18.4449 3.14097L17.7599 7H21.6171C21.6916 7 21.7481 7.06725 21.7353 7.14069L21.4273 8.90069C21.4172 8.95811 21.3674 9 21.3091 9H17.4099L17.0495 11.04H15.05L15.4104 9H9.41035L8.35035 15H10.5599V17H7.99991L7.30749 20.901C7.29732 20.9583 7.24752 21 7.18934 21H5.43309Z" fill="#b9bbbe"></path><path d="M13.4399 12.96C12.9097 12.96 12.4799 13.3898 12.4799 13.92V20.2213C12.4799 20.7515 12.9097 21.1813 13.4399 21.1813H14.3999C14.5325 21.1813 14.6399 21.2887 14.6399 21.4213V23.4597C14.6399 23.6677 14.8865 23.7773 15.0408 23.6378L17.4858 21.4289C17.6622 21.2695 17.8916 21.1813 18.1294 21.1813H22.5599C23.0901 21.1813 23.5199 20.7515 23.5199 20.2213V13.92C23.5199 13.3898 23.0901 12.96 22.5599 12.96H13.4399Z" fill="#b9bbbe"></path></symbol></defs></svg><body><div class="preamble"><div class="preamble__guild-icon-container"><img alt="Guild icon" class="preamble__guild-icon" loading="lazy" src="assets/eef8bb9f6c6a6b82d7a65bb77f8b5e94.png"/></div><div class="preamble__entries-container"><div class="preamble__entry">PyScript 💻</div><div class="preamble__entry">💬 | General / pyscript-ltk</div><div class="preamble__entry preamble__entry--small">Laffra's Tool Kit :-)</div></div></div>
<div class="chatlog">
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1228676410604781639" id="chatlog__message-container-1228676410604781639"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/1f047e7d4848bad8f0a3362947e3eb03.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="354682505271443468" style="color:rgb(233,102,11)" title="ntoll">ntoll</span> <span class="chatlog__timestamp" title="13 April 2024 13:01"><a href="#chatlog__message-container-1228676410604781639">13/04/2024 13:01</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="chrislaffra">@chrislaffra</span> <span class="chatlog__markdown-mention" title="chris.laffra">@chris.laffra</span></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1228677101239013448" id="chatlog__message-container-1228677101239013448"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="13 April 2024 13:04"><a href="#chatlog__message-container-1228677101239013448">13/04/2024 13:04</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">In this channel we discuss the LTK toolkit. See <a href="https://github.com/pyscript/ltk">https://github.com/pyscript/ltk</a></span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1228677101914423326/image.png?ex=691bb7f8&is=691a6678&hm=bc9ee449826a4d012f2aebc77c16ca91f7ceb94892fbb86e3219fd2ab151cdc2&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/image.png" title="Image: image.png (258.01 KB)"/> </a></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/pyscript/ltk"><div class="chatlog__markdown chatlog__markdown-preserve">GitHub - pyscript/ltk: LTK is a little toolkit for writing UIs in P...</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">LTK is a little toolkit for writing UIs in PyScript - pyscript/ltk</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/KKmeVHRW_F74sUKgaQ2bKTZF67Ml7YdrepugvWMV-1A/https/opengraph.githubassets.com/2f9199d9594b09f3ac238a8ba19ad1222b59347d663181250996c7112724bab3/pyscript/ltk"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/KKmeVHRW_F74sUKgaQ2bKTZF67Ml7YdrepugvWMV-1A/https/opengraph.githubassets.com/2f9199d9594b09f3ac238a8ba19ad1222b59347d663181250996c7112724bab3/pyscript/ltk"/> </a></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="partying_face"><img alt="🥳" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f973.svg"/> <span class="chatlog__reaction-count">3</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1229019862354100275" id="chatlog__message-container-1229019862354100275"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/42190653f009835ba9b2720c7ee0af59.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="893438881331036191" title="andrew_vr_d">AndrewD</span> <span class="chatlog__timestamp" title="14 April 2024 11:46"><a href="#chatlog__message-container-1229019862354100275">14/04/2024 11:46</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">When I tried the ltk kitchen sink demo i noticed the tutorial wasn't cancelled if you select a different tab while the tutorial demo was active. Is that still the case?
Maybe it would be possible to demo how to hide the tutorial when tabs are switched?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1229021023165349958" id="chatlog__message-container-1229021023165349958"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/42190653f009835ba9b2720c7ee0af59.png"/><div class="chatlog__reply-author" title="andrew_vr_d">AndrewD</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1229019862354100275')"> When I tried the ltk kitchen sink demo i noticed the tutorial wasn't cancelled if you select a different tab while the tutorial demo was active. Is that still the case?
Maybe it would be possible to demo how to hide the tutorial when tabs are switched? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="14 April 2024 11:50"><a href="#chatlog__message-container-1229021023165349958">14/04/2024 11:50</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Would you have an idea how to do that? We love PRs that improve the pyscript eco-system, including LTK.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1229179009741357161" id="chatlog__message-container-1229179009741357161"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/42190653f009835ba9b2720c7ee0af59.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/><div class="chatlog__reply-author" title="chris.laffra">chris.laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1229021023165349958')"> Would you have an idea how to do that? We love PRs that improve the pyscript eco-system, including LTK. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="893438881331036191" title="andrew_vr_d">AndrewD</span> <span class="chatlog__timestamp" title="14 April 2024 22:18"><a href="#chatlog__message-container-1229179009741357161">14/04/2024 22:18</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I'm at the "intellectually curious" stage with pyscript and have done a few experiments, but with ltk I've only run the demo so there is a bit more time required before I can contribute a useful pr.
I live in the embedded hardware / fpga / software space: I'm curious about pyscript for tools to interact with my products without much "web" learning curve.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1229183375303118909" id="chatlog__message-container-1229183375303118909"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/42190653f009835ba9b2720c7ee0af59.png"/><div class="chatlog__reply-author" title="andrew_vr_d">AndrewD</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1229179009741357161')"> I'm at the "intellectually curious" stage with pyscript and have done a few experiments, but with ltk I've only run the demo so there is a bit more time required before I can contribute a useful pr.
I live in the embedded hardware / fpga / software space: I'm curious about pyscript for tools to interact with my products without much "web" learning curve. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="14 April 2024 22:35"><a href="#chatlog__message-container-1229183375303118909">14/04/2024 22:35</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">No problem. The fix was easy. A new version of LTK has been published with the fix and the Kitchensink now works as expected when you switch away from the tutorial tab while a tutorial is active. See the commit here:
<a href="https://github.com/pyscript/ltk/commit/3f6bf81b01dbe820b1ee8d64605f2dba58d70d23">https://github.com/pyscript/ltk/commit/3f6bf81b01dbe820b1ee8d64605f2dba58d70d23</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/pyscript/ltk/commit/3f6bf81b01dbe820b1ee8d64605f2dba58d70d23"><div class="chatlog__markdown chatlog__markdown-preserve">Only render tutorial steps when the target widget is visible · pysc...</div></a></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/4ZBaPTPCRG-7toj-0GVz_QJ_obr4tSpSkmnw99wCe2E/https/opengraph.githubassets.com/f92050381200b1fbefa84ca10df6b24a2056b6bb3371249cc0f2b9344e71fa07/pyscript/ltk/commit/3f6bf81b01dbe820b1ee8d64605f2dba58d70d23"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/4ZBaPTPCRG-7toj-0GVz_QJ_obr4tSpSkmnw99wCe2E/https/opengraph.githubassets.com/f92050381200b1fbefa84ca10df6b24a2056b6bb3371249cc0f2b9344e71fa07/pyscript/ltk/commit/3f6bf81b01dbe820b1ee8d64605f2dba58d70d23"/> </a></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div><div class="chatlog__reaction" title="tada"><img alt="🎉" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f389.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235514706874073128" id="chatlog__message-container-1235514706874073128"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="02 May 2024 09:54"><a href="#chatlog__message-container-1235514706874073128">02/05/2024 09:54</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">How to get started with ltk?</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1235514706639323167/7.png?ex=691c343c&is=691ae2bc&hm=69b03df7d733b9e4bf6e4b77687c43ee2baa6c5e1bc85748b20a8d5b1b10dd34&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/7.png" title="Image: 7.png (114.18 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235515632389459978" id="chatlog__message-container-1235515632389459978"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="zobi5905">zobi</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1235514706874073128')"> How to get started with ltk? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="02 May 2024 09:58"><a href="#chatlog__message-container-1235515632389459978">02/05/2024 09:58</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">go here: <a href="https://pyscript.github.io/ltk/?tab=13">https://pyscript.github.io/ltk/?tab=13</a> cut and paste</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="eyes"><img alt="👀" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f440.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235520501045268510" id="chatlog__message-container-1235520501045268510"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1235515632389459978')"> go here: <a href="https://pyscript.github.io/ltk/?tab=13">https://pyscript.github.io/ltk/?tab=13</a> cut and paste </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="02 May 2024 10:17"><a href="#chatlog__message-container-1235520501045268510">02/05/2024 10:17</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Got the following.</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1235520500826902548/6.png?ex=691c39a2&is=691ae822&hm=11ed2fd028ea063c7b2f1df1ec28d7204d07ba5ab4d30a12e0354ef8195c4840&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/6.png" title="Image: 6.png (140.03 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235523208480821278" id="chatlog__message-container-1235523208480821278"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="02 May 2024 10:28"><a href="#chatlog__message-container-1235523208480821278">02/05/2024 10:28</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Just run it on its own - not inside a spreadsheet....</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235534082767585300" id="chatlog__message-container-1235534082767585300"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="02 May 2024 11:11"><a href="#chatlog__message-container-1235534082767585300">02/05/2024 11:11</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">What are the spreadsheets for?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235701741400625273" id="chatlog__message-container-1235701741400625273"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="02 May 2024 22:17"><a href="#chatlog__message-container-1235701741400625273">02/05/2024 22:17</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">What you are looking at @zobi is PySheets, which is an app written on top of LTK. If you click on the link at the bottom-left, you will be taken to the LTK page.</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1235701817615188039" id="chatlog__message-container-1235701817615188039"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="02 May 2024 22:17">22:17</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><a href="https://github.com/pyscript/ltk">https://github.com/pyscript/ltk</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/pyscript/ltk"><div class="chatlog__markdown chatlog__markdown-preserve">GitHub - pyscript/ltk: LTK is a little toolkit for writing UIs in P...</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">LTK is a little toolkit for writing UIs in PyScript - pyscript/ltk</div></div></div></div></div></div></div></div></div><div class="chatlog__message-container" data-message-id="1235702115960356864" id="chatlog__message-container-1235702115960356864"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="02 May 2024 22:19">22:19</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">The github README has information on how to get started. One of the things to try is the Kitchensink, which will give you inspiration on what is possible with LTK. The README also has links to minimal projects on pyscript.com to get you started.</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1235702701439057950" id="chatlog__message-container-1235702701439057950"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="02 May 2024 22:21">22:21</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">PySheets is not a general-purpose IDE. If you want to build your own app in LTK, it is best to start in pyscript.com. That said, cool you registered for PySheets and tried it out. <img alt="👍" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg" title="thumbsup"/></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1235866365857108018" id="chatlog__message-container-1235866365857108018"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="03 May 2024 09:11"><a href="#chatlog__message-container-1235866365857108018">03/05/2024 09:11</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="chris.laffra">@chris.laffra</span> I know about LTK.I have attended your community call on Py Sheets about reading csv file, was willing to try but was not sure where to start.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1260174707152519209" id="chatlog__message-container-1260174707152519209"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="zobi5905">zobi</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1235866365857108018')"> <span class="chatlog__markdown-mention" title="chris.laffra">@chris.laffra</span> I know about LTK.I have attended your community call on Py Sheets about reading csv file, was willing to try but was not sure where to start. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="09 July 2024 11:04"><a href="#chatlog__message-container-1260174707152519209">09/07/2024 11:04</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">The best place to start with LTK is to visit the github repo: <a href="https://github.com/pyscript/ltk">https://github.com/pyscript/ltk</a>. It links to the Kitchensink that shows all widgets.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1270581536596688896" id="chatlog__message-container-1270581536596688896"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="07 August 2024 04:17"><a href="#chatlog__message-container-1270581536596688896">07/08/2024 04:17</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">LTK shows error when you select dropdown for MicroPython.</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1270581536361676830/ltk.png?ex=691be544&is=691a93c4&hm=88b6e0226a3a7ebe059ac59ab1856cce4bcc77eb4e9db4669d41b6b96b3fbaf9&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/ltk.png" title="Image: ltk.png (146.47 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1271195638926938183" id="chatlog__message-container-1271195638926938183"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="zobi5905">zobi</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1270581536596688896')"> LTK shows error when you select dropdown for MicroPython. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="08 August 2024 20:57"><a href="#chatlog__message-container-1271195638926938183">08/08/2024 20:57</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">In the Kitchensink example, "choose_theme" should not be wrapped with a callback decorator. This has been fixed.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1271323922801102929" id="chatlog__message-container-1271323922801102929"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/><div class="chatlog__reply-author" title="chris.laffra">chris.laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1271195638926938183')"> In the Kitchensink example, "choose_theme" should not be wrapped with a callback decorator. This has been fixed. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="09 August 2024 05:27"><a href="#chatlog__message-container-1271323922801102929">09/08/2024 05:27</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Rechecked it.It's fixed <img alt="👍" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg" title="thumbsup"/></span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274088987019055106" id="chatlog__message-container-1274088987019055106"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="16 August 2024 20:34"><a href="#chatlog__message-container-1274088987019055106">16/08/2024 20:34</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">So this is basically a library for creating the UI entirely in python?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274092402856034428" id="chatlog__message-container-1274092402856034428"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="16 August 2024 20:48"><a href="#chatlog__message-container-1274092402856034428">16/08/2024 20:48</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">So no real need to bother with HTML?</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1274092470308700210" id="chatlog__message-container-1274092470308700210"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="16 August 2024 20:48">20:48</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Other than to set it up.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274099493452910622" id="chatlog__message-container-1274099493452910622"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="16 August 2024 21:16"><a href="#chatlog__message-container-1274099493452910622">16/08/2024 21:16</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">The ltk is a wrapper to make it easier in python to specify html/css UI entities and to hook up interactions.\ between them. Its still html and css though. In my experience its been quite straightforward to construct complex UIs with a high degree of interaction using the ltk. But you still need to know a little jquery and css and html but very little to none, javascript.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274099829651411069" id="chatlog__message-container-1274099829651411069"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="16 August 2024 21:17"><a href="#chatlog__message-container-1274099829651411069">16/08/2024 21:17</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I mean more in the sense that <em>I</em> can craft a UI with less manual HTML.</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1274100175698133014" id="chatlog__message-container-1274100175698133014"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="16 August 2024 21:19">21:19</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Like, I'm just learning pyscript. And I do enjoy the fact that I bypass writing any of my own javascript, and only have minimal direct interaction with the API.</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1274100411300577332" id="chatlog__message-container-1274100411300577332"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="16 August 2024 21:20">21:20</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">So I'm interested in what seems like a way to also write less HTML, because HTML is a little cumbersome.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274128328319569971" id="chatlog__message-container-1274128328319569971"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="16 August 2024 23:11"><a href="#chatlog__message-container-1274128328319569971">16/08/2024 23:11</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I've never seen python code look like this. I have a hard time even making out what's happening.
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-py">import ltk
(
ltk.VBox(
ltk.HBox(
ltk.Text("Hello"),
ltk.Button(
"World",
lambda event:
ltk.find(".ltk-button, a")
.css("color", "red")
)
.css("color", "blue")
)
)
.appendTo(ltk.window.document.body)
)</code></span> <span class="chatlog__edited-timestamp" title="16 August 2024 23:11">(edited)</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1274128758093385840" id="chatlog__message-container-1274128758093385840"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="16 August 2024 23:12">23:12</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Like what is this <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">.css()</code> stuff, isn't a dot supposed to signify an attribute of something else?</span> <span class="chatlog__edited-timestamp" title="16 August 2024 23:13">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274133839257800725" id="chatlog__message-container-1274133839257800725"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="16 August 2024 23:32"><a href="#chatlog__message-container-1274133839257800725">16/08/2024 23:32</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I guess <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">css</code> is an attribute of a widget. And because we're between parentheses we're allowed to use newlines and tabs this way? So the dot applies to the return values of those widget constructors? Does <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">css()</code> return the widget it was called on?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274201553909321738" id="chatlog__message-container-1274201553909321738"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="17 August 2024 04:02"><a href="#chatlog__message-container-1274201553909321738">17/08/2024 04:02</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Correct. This technique is usually referred to as "chaining" in programming languages and is quite popular in JavaScript and the jQuery library. LTK is a thin layer around jQuery, but entirely written in Python. It allows you to write client-side UIs in Python.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274255771328315402" id="chatlog__message-container-1274255771328315402"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="17 August 2024 07:37"><a href="#chatlog__message-container-1274255771328315402">17/08/2024 07:37</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I have worked a little with tkinter to prototype my stuff.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1274316945373532213" id="chatlog__message-container-1274316945373532213"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="17 August 2024 11:40"><a href="#chatlog__message-container-1274316945373532213">17/08/2024 11:40</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Is there a more comprehensive documentation, like what widgets there are? Or do I just read the code for it?</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1274317811828920391" id="chatlog__message-container-1274317811828920391"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="17 August 2024 11:44">11:44</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Like right now I'm just looking in widgets.py</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275201554080596158" id="chatlog__message-container-1275201554080596158"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/><div class="chatlog__reply-author" title="manock">Manock</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1274316945373532213')"> Is there a more comprehensive documentation, like what widgets there are? Or do I just read the code for it? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="19 August 2024 22:15"><a href="#chatlog__message-container-1275201554080596158">19/08/2024 22:15</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Have you seen the Kitchensink that shows all the widgets? <a href="https://pyscript.github.io/ltk/">https://pyscript.github.io/ltk/</a></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275221467944194142" id="chatlog__message-container-1275221467944194142"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="19 August 2024 23:34"><a href="#chatlog__message-container-1275221467944194142">19/08/2024 23:34</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I did end up quickly browsing it. Although examining the source code also taught me a lot.
By the way, once you add a widget to the document, can you make changes to it live, or do you need to <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">find()</code> the element you just added?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275407262529359905" id="chatlog__message-container-1275407262529359905"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/><div class="chatlog__reply-author" title="manock">Manock</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1275221467944194142')"> I did end up quickly browsing it. Although examining the source code also taught me a lot.
By the way, once you add a widget to the document, can you make changes to it live, or do you need to <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">find()</code> the element you just added? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="20 August 2024 11:53"><a href="#chatlog__message-container-1275407262529359905">20/08/2024 11:53</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">you can refer to it as a <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">self.thispart = ltk.Input()</code> then you have long term access to it. or give it an id with <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">.attr("id","zoom").addClass("vcenter bloat")</code> and get it whenever you need it with an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.find("#zoom").val()</code> or an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.find_list(".bloat")</code> or an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.jQuery("#zoom")</code> or somesuch.</span> <span class="chatlog__edited-timestamp" title="20 August 2024 11:53">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275409623339372545" id="chatlog__message-container-1275409623339372545"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 12:02"><a href="#chatlog__message-container-1275409623339372545">20/08/2024 12:02</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Well I meant more like.
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-py"> my_w = MyWidget().appendTo(document.body)
my_w.text('New Text')</code></span> <span class="chatlog__edited-timestamp" title="20 August 2024 12:03">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275409687055040584" id="chatlog__message-container-1275409687055040584"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1275407262529359905')"> you can refer to it as a <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">self.thispart = ltk.Input()</code> then you have long term access to it. or give it an id with <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">.attr("id","zoom").addClass("vcenter bloat")</code> and get it whenever you need it with an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.find("#zoom").val()</code> or an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.find_list(".bloat")</code> or an <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.jQuery("#zoom")</code> or somesuch. </span> <span class="chatlog__reply-edited-timestamp" title="20 August 2024 11:53">(edited)</span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 12:02"><a href="#chatlog__message-container-1275409687055040584">20/08/2024 12:02</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Will doing it like this update the text in the body live?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275410197745238016" id="chatlog__message-container-1275410197745238016"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="20 August 2024 12:04"><a href="#chatlog__message-container-1275410197745238016">20/08/2024 12:04</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">oh yes. see here: <a href="https://pyscript.com/@neon22/iso-weaves/latest">https://pyscript.com/@neon22/iso-weaves/latest</a> has all that and SVG live maipulation. Try to click on an input and use your mousewheel to scroll the change in values. Not the best code but an early experiment</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275413749561294860" id="chatlog__message-container-1275413749561294860"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 12:18"><a href="#chatlog__message-container-1275413749561294860">20/08/2024 12:18</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I also ran into an interesting behavior.
If I build an existing widget class and use addClass() on it, LTK will still override my style sheet, unless I add the style sheet to the page through script.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275421098783281185" id="chatlog__message-container-1275421098783281185"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="20 August 2024 12:48"><a href="#chatlog__message-container-1275421098783281185">20/08/2024 12:48</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I use stylesheet and only use .css() if I can't be bothered. Inherits better. .css() overrides the style sheet</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275433939288330386" id="chatlog__message-container-1275433939288330386"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1275421098783281185')"> I use stylesheet and only use .css() if I can't be bothered. Inherits better. .css() overrides the style sheet </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 13:39"><a href="#chatlog__message-container-1275433939288330386">20/08/2024 13:39</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I never used .css(), it's the LTK styles that override my own style sheet.
So if I use a constructor to create a widget, and then add my own class. That widget's default style will override my own style.</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1275434167513124884" id="chatlog__message-container-1275434167513124884"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="20 August 2024 13:40">13:40</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Because when I import the ltk module it adds the style sheet to the end of the <head>.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275439511106621512" id="chatlog__message-container-1275439511106621512"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 14:01"><a href="#chatlog__message-container-1275439511106621512">20/08/2024 14:01</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">To be fair most of the basic tags don't really have any styles. Or just behavior-related ones.
Not sure why HBox and VBox for example have their own fonts.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275479148290379930" id="chatlog__message-container-1275479148290379930"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="20 August 2024 16:38"><a href="#chatlog__message-container-1275479148290379930">20/08/2024 16:38</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Not that it's hard to create my own widgets from scratch. jQuery and CSS seem to do most of the heavy lifting anyway.</span> <span class="chatlog__edited-timestamp" title="20 August 2024 16:39">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275543991764389900" id="chatlog__message-container-1275543991764389900"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="20 August 2024 20:56"><a href="#chatlog__message-container-1275543991764389900">20/08/2024 20:56</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">ok. what I do in that case is lookup the styles that are being used (using the inspector) then override them in my main.css at the very end of the file. (maybe that's not so impt). Then my css file overrides the ltk one. Mine appears after the ltk one in the index.html (not sure how critical that is either).</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1275544126942613505" id="chatlog__message-container-1275544126942613505"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="20 August 2024 20:56">20:56</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">but if I do that - I can override the ltk styles without difficulty</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1275709071701573653" id="chatlog__message-container-1275709071701573653"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/9cf4a188a78c1d4ae079176dc596a7f5.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1275543991764389900')"> ok. what I do in that case is lookup the styles that are being used (using the inspector) then override them in my main.css at the very end of the file. (maybe that's not so impt). Then my css file overrides the ltk one. Mine appears after the ltk one in the index.html (not sure how critical that is either). </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="134676195315810304" title="manock">Manock</span> <span class="chatlog__timestamp" title="21 August 2024 07:52"><a href="#chatlog__message-container-1275709071701573653">21/08/2024 07:52</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">You can only override the ltk files either if you inject it through script, or if you put both the ltk class and your own class in your file and override by specificity.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1278646495851057262" id="chatlog__message-container-1278646495851057262"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1275543991764389900')"> ok. what I do in that case is lookup the styles that are being used (using the inspector) then override them in my main.css at the very end of the file. (maybe that's not so impt). Then my css file overrides the ltk one. Mine appears after the ltk one in the index.html (not sure how critical that is either). </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="29 August 2024 10:24"><a href="#chatlog__message-container-1278646495851057262">29/08/2024 10:24</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">how do you put your css file after the ltk css? the ltk css (and the js) is injected at the bottom of <head>, not loaded as a stylesheet link.
my problem is it overwrites and breaks the darkmode of pico css</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1278658933443133516" id="chatlog__message-container-1278658933443133516"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1278646495851057262')"> how do you put your css file after the ltk css? the ltk css (and the js) is injected at the bottom of <head>, not loaded as a stylesheet link.
my problem is it overwrites and breaks the darkmode of pico css </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="29 August 2024 11:14"><a href="#chatlog__message-container-1278658933443133516">29/08/2024 11:14</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">in head I have:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"><!-- Import PyScript -->
<link rel="stylesheet" href="https://pyscript.net/releases/2024.8.2/core.css">
<script type="module" src="https://pyscript.net/releases/2024.8.2/core.js"></script>
<!-- Import jQuery - used in ltk/jquery.py -->
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css"></code>
in body I have:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"><script type="py" src="main.py" config="pyscript_pyo.toml" terminal></script>
<link rel="stylesheet" href="./main.css"/></code></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1278659646500114444" id="chatlog__message-container-1278659646500114444"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1278646495851057262')"> how do you put your css file after the ltk css? the ltk css (and the js) is injected at the bottom of <head>, not loaded as a stylesheet link.
my problem is it overwrites and breaks the darkmode of pico css </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="29 August 2024 11:16"><a href="#chatlog__message-container-1278659646500114444">29/08/2024 11:16</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Here is a project with the ltk and a number of overridden css entries in main.css (at the very end)
<ul><li><a href="https://pyscript.com/@neon22/sectional-beam-raddle-distribution/latest?files=main.py,index.html">https://pyscript.com/@neon22/sectional-beam-raddle-distribution/latest?files=main.py,index.html</a></li></ul>This works well for me to override the ltk css entries</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1278662406012403743" id="chatlog__message-container-1278662406012403743"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1278658933443133516')"> in head I have:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"><!-- Import PyScript -->
<link rel="stylesheet" href="https://pyscript.net/releases/2024.8.2/core.css">
<script type="module" src="https://pyscript.net/releases/2024.8.2/core.js"></script>
<!-- Import jQuery - used in ltk/jquery.py -->
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css"></code>
in body I have:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"><script type="py" src="main.py" config="pyscript_pyo.toml" terminal></script>
<link rel="stylesheet" href="./main.css"/></code> </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="29 August 2024 11:27"><a href="#chatlog__message-container-1278662406012403743">29/08/2024 11:27</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">ohhh in the body, got it</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1278662929188655104" id="chatlog__message-container-1278662929188655104"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1278662406012403743')"> ohhh in the body, got it </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="29 August 2024 11:29"><a href="#chatlog__message-container-1278662929188655104">29/08/2024 11:29</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Sweet <img alt="🙂" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f642.svg" title="slight_smile"/></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281471237427564588" id="chatlog__message-container-1281471237427564588"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="06 September 2024 05:29"><a href="#chatlog__message-container-1281471237427564588">06/09/2024 05:29</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">sharing something I figured out:
I wanted to have a button be the default action when hitting Return in a text box, and I found I can achieve that by putting <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">type="submit</code> on the button, but for it to work the button and the text box need to be in a form, which was mostly easy to do (change my widget from inheriting from ltk.Div to inheriting ltk.Form) but I had to set <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">action</code> on the form for it to be a valid and functional form. I found the way to what while preventing the form submit from performing a page load is: <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">self.attr("action", "javascript:void(0);")</code> but I was dissatisfied with that because it's js. So on a hunch I changed it to <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">self.attr("action", "pyscript:lambda e:pass")</code> and I was very pleased that this was correct!</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281487642269061150" id="chatlog__message-container-1281487642269061150"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="06 September 2024 06:34"><a href="#chatlog__message-container-1281487642269061150">06/09/2024 06:34</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">you could also have used 'ltk.proxy(lambda event: pass)`</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281516783806713856" id="chatlog__message-container-1281516783806713856"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="06 September 2024 08:30"><a href="#chatlog__message-container-1281516783806713856">06/09/2024 08:30</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Ah, thanks</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281530062629507092" id="chatlog__message-container-1281530062629507092"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="06 September 2024 09:22"><a href="#chatlog__message-container-1281530062629507092">06/09/2024 09:22</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">that's what i really wanted but didn't know how to find out</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281573004136157205" id="chatlog__message-container-1281573004136157205"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="06 September 2024 12:13"><a href="#chatlog__message-container-1281573004136157205">06/09/2024 12:13</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">FYI, the proxy is only needed on PyOdide as MicroPython handles FFI differently and will keep track of Python pointers sent to JS and vice-versa without needing a proxy.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281588637326245899" id="chatlog__message-container-1281588637326245899"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1281487642269061150')"> you could also have used 'ltk.proxy(lambda event: pass)` </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="06 September 2024 13:15"><a href="#chatlog__message-container-1281588637326245899">06/09/2024 13:15</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">that helped me get my latest thing working, combining this:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-py">remove_notif = ltk.proxy(lambda event, ui: ltk.jQuery(event.target).remove())</code>
with this
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-py"> for notif in reversed(data.pop("notifications", [])):
ltk.Div(ltk.Text(notif)).attr("id", "notif-popup").on("dialogclose", remove_notif).dialog()</code>
cos clicking the close button on a jQuery dialog doesn't remove it from the DOM and that's not friendly for screenreaders</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1281921793652949034" id="chatlog__message-container-1281921793652949034"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/96909edf73b13072aa23864d88545608.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1098917963081449555" title="chris.laffra">chris.laffra</span> <span class="chatlog__timestamp" title="07 September 2024 11:19"><a href="#chatlog__message-container-1281921793652949034">07/09/2024 11:19</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I did not think it made sense to have a special ltk.Dialog class, but it would be nice to create one to capture this pattern.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1282727601353261152" id="chatlog__message-container-1282727601353261152"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1187506426164285554" title="honest_sparrow_44340">mrc</span> <span class="chatlog__timestamp" title="09 September 2024 16:41"><a href="#chatlog__message-container-1282727601353261152">09/09/2024 16:41</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Wondering what the relationship is between LTK and , say a new Jquery widget like Carousel - what LTK approach and objects to address. Then how about something more complicated like GSAP animation?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1282868838144147516" id="chatlog__message-container-1282868838144147516"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="10 September 2024 02:02"><a href="#chatlog__message-container-1282868838144147516">10/09/2024 02:02</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I'm trying to figure out how to programatically add menu items to a menu but the only "straightforward" method I can see is replacing the whole menu each time</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283367008783700091" id="chatlog__message-container-1283367008783700091"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="honest_sparrow_44340">mrc</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1282727601353261152')"> Wondering what the relationship is between LTK and , say a new Jquery widget like Carousel - what LTK approach and objects to address. Then how about something more complicated like GSAP animation? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="11 September 2024 11:02"><a href="#chatlog__message-container-1283367008783700091">11/09/2024 11:02</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">You can see the source at github to explore how LTK wraps existing jQuery elements. A good example is ltk.Tabs, which wraps a <div> and then calls the jQueryUI "tabs()" function to have jQuery turn the div into a list of tabs. <a href="https://github.com/pyscript/ltk/blob/main/ltk/widgets.py#L575">https://github.com/pyscript/ltk/blob/main/ltk/widgets.py#L575</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/pyscript/ltk/blob/main/ltk/widgets.py"><div class="chatlog__markdown chatlog__markdown-preserve">ltk/ltk/widgets.py at main · pyscript/ltk</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">LTK is a little toolkit for writing UIs in PyScript - pyscript/ltk</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/FeyrOP7UGFVgHxEgH-xdovo17GRqoT_VFfLphhMhzuw/https/opengraph.githubassets.com/04d14a7e214d420231f060983b27156eacd606a66618c59df23022cc6fed3d40/pyscript/ltk"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/FeyrOP7UGFVgHxEgH-xdovo17GRqoT_VFfLphhMhzuw/https/opengraph.githubassets.com/04d14a7e214d420231f060983b27156eacd606a66618c59df23022cc6fed3d40/pyscript/ltk"/> </a></div></div></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283504678197530717" id="chatlog__message-container-1283504678197530717"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="11 September 2024 20:09"><a href="#chatlog__message-container-1283504678197530717">11/09/2024 20:09</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">unable to open pysheets app shows the following message?</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1283504678377623595/imm.png?ex=691c1ba1&is=691aca21&hm=fcc7750edbf3d08b0e2ad4123e938fd221ff72d72455229344f305fddbc719a4&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/imm.png" title="Image: imm.png (30.4 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283719666379915396" id="chatlog__message-container-1283719666379915396"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="12 September 2024 10:23"><a href="#chatlog__message-container-1283719666379915396">12/09/2024 10:23</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="zobi5905">@zobi</span> What is unclear about the message? What happens when you click OK?</span> <span class="chatlog__edited-timestamp" title="12 September 2024 10:23">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283745051809284130" id="chatlog__message-container-1283745051809284130"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/><div class="chatlog__reply-author" title="chrislaffra.">Chris Laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1283719666379915396')"> <span class="chatlog__markdown-mention" title="zobi5905">@zobi</span> What is unclear about the message? What happens when you click OK? </span> <span class="chatlog__reply-edited-timestamp" title="12 September 2024 10:23">(edited)</span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="12 September 2024 12:04"><a href="#chatlog__message-container-1283745051809284130">12/09/2024 12:04</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">It works for sometime and later stops showing the following message.</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1283745051616350208/la.png?ex=691ba9ff&is=691a587f&hm=d52a39c5ecf28b7618d39e87ce12e4c7aba488ca9453977e73a77d15bad14e8c&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/la.png" title="Image: la.png (27.89 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283745304860037153" id="chatlog__message-container-1283745304860037153"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="12 September 2024 12:05"><a href="#chatlog__message-container-1283745304860037153">12/09/2024 12:05</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">What browser?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283745813830439068" id="chatlog__message-container-1283745813830439068"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="12 September 2024 12:07"><a href="#chatlog__message-container-1283745813830439068">12/09/2024 12:07</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Microsoft Edge.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1283754963440242732" id="chatlog__message-container-1283754963440242732"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="12 September 2024 12:43"><a href="#chatlog__message-container-1283754963440242732">12/09/2024 12:43</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">See the discussion in the pyscript-bugs channel.</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">2</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1284235463175049290" id="chatlog__message-container-1284235463175049290"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="13 September 2024 20:33"><a href="#chatlog__message-container-1284235463175049290">13/09/2024 20:33</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">LTK was covered by the RealPython Podcast this week. LTK (and PyScript/Anaconda) received nice feedback from the podcast hosts. Today, I recorded a full hour podcast with them on Communication skills, PySheets, MicroPython, PyOdide, PyScript. That podcast will be published some time in October. See episode 220 for LTK: <a href="https://realpython.com/podcasts/rpp/220/#t=2658">https://realpython.com/podcasts/rpp/220/#t=2658</a></span> <span class="chatlog__edited-timestamp" title="13 September 2024 20:36">(edited)</span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill chatlog__embed-color-pill--default"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://realpython.com/podcasts/rpp/220/"><div class="chatlog__markdown chatlog__markdown-preserve">Episode #220: Configuring Git Pre-Commit Hooks & Estimating Softwar...</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">How do you take advantage of Git pre-commit hooks? How do you build custom software checks and rules that run every time you commit your code? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder's Weekly articles and projects.</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/meMSY68Bb5CcX7Q3PB5GFmrgVxHamjmFu7YJ6K0wBkY/https/files.realpython.com/media/E_220_Podcast_Title.e0f65a5f23b3.jpg"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/meMSY68Bb5CcX7Q3PB5GFmrgVxHamjmFu7YJ6K0wBkY/https/files.realpython.com/media/E_220_Podcast_Title.e0f65a5f23b3.jpg"/> </a></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="clap"><img alt="👏" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44f.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1284952376935055483" id="chatlog__message-container-1284952376935055483"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1282868838144147516')"> I'm trying to figure out how to programatically add menu items to a menu but the only "straightforward" method I can see is replacing the whole menu each time </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="15 September 2024 20:01"><a href="#chatlog__message-container-1284952376935055483">15/09/2024 20:01</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">A menu has a popup that holds the items. You can make "normal" jquery <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">remove</code> and <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">append</code> calls on the popup (it is a jQuery node). For instance, this adds an item: <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">menu.popup.append(new_item)</code> and this removes the second item: <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">menu.popup.children().eq(1).remove()</code>. See <a href="https://github.com/pyscript/ltk/blob/main/ltk/widgets.py#L858">https://github.com/pyscript/ltk/blob/main/ltk/widgets.py#L858</a></span> <span class="chatlog__edited-timestamp" title="15 September 2024 20:03">(edited)</span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/pyscript/ltk/blob/main/ltk/widgets.py"><div class="chatlog__markdown chatlog__markdown-preserve">ltk/ltk/widgets.py at main · pyscript/ltk</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">LTK is a little toolkit for writing UIs in PyScript - pyscript/ltk</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/AA_MayISEIst6KklJX7v1MAfLVYjkdnJzDGbbfpEJcQ/https/opengraph.githubassets.com/b2b1cc55892de17e5e8217323efa27c3528b3830e1456bf937c9506cc9679495/pyscript/ltk"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/AA_MayISEIst6KklJX7v1MAfLVYjkdnJzDGbbfpEJcQ/https/opengraph.githubassets.com/b2b1cc55892de17e5e8217323efa27c3528b3830e1456bf937c9506cc9679495/pyscript/ltk"/> </a></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="ty"><img alt="ty" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="assets/352977916365373441.png"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1286814859442520136" id="chatlog__message-container-1286814859442520136"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/42190653f009835ba9b2720c7ee0af59.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/><div class="chatlog__reply-author" title="chrislaffra.">Chris Laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1284235463175049290')"> LTK was covered by the RealPython Podcast this week. LTK (and PyScript/Anaconda) received nice feedback from the podcast hosts. Today, I recorded a full hour podcast with them on Communication skills, PySheets, MicroPython, PyOdide, PyScript. That podcast will be published some time in October. See episode 220 for LTK: <a href="https://realpython.com/podcasts/rpp/220/#t=2658">https://realpython.com/podcasts/rpp/220/#t=2658</a> </span> <span class="chatlog__reply-edited-timestamp" title="13 September 2024 20:36">(edited)</span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="893438881331036191" title="andrew_vr_d">AndrewD</span> <span class="chatlog__timestamp" title="20 September 2024 23:22"><a href="#chatlog__message-container-1286814859442520136">20/09/2024 23:22</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I incidentally listened to that episode earlier this week and heard the praise of ltk which was nice to hear. I look forward to the episode you have recorded with them.
It was a real python article about an early version of pyscript that brought it to my attention.</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="heart"><img alt="❤️" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/2764.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1296904727153348721" id="chatlog__message-container-1296904727153348721"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1187506426164285554" title="honest_sparrow_44340">mrc</span> <span class="chatlog__timestamp" title="18 October 2024 19:36"><a href="#chatlog__message-container-1296904727153348721">18/10/2024 19:36</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Guys, just discovered Nicegui <a href="https://nicegui.io/documentation">https://nicegui.io/documentation</a> (not sure if this was discussed) - but looks cool. Maybe take a few pointers from this project.</span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(88,152,212,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://nicegui.io/documentation"><div class="chatlog__markdown chatlog__markdown-preserve">NiceGUI Documentation</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">NiceGUI is an easy-to-use, Python-based UI framework, which shows up in your web browser. You can create buttons, dialogs, Markdown, 3D scenes, plots and much more.</div></div></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1297297774945243258" id="chatlog__message-container-1297297774945243258"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="honest_sparrow_44340">mrc</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1296904727153348721')"> Guys, just discovered Nicegui <a href="https://nicegui.io/documentation">https://nicegui.io/documentation</a> (not sure if this was discussed) - but looks cool. Maybe take a few pointers from this project. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="19 October 2024 21:38"><a href="#chatlog__message-container-1297297774945243258">19/10/2024 21:38</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Two things I like: (1) binding a UI element to a model and (2) nice default styling.
One thing I do not like: the UI is entirely server-rendered and does not use Python in the browser at all.
Conclusion: I would love to see some PRs for LTK for better default styling or for value binding (as a better React).</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1307839158005530735" id="chatlog__message-container-1307839158005530735"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="17 November 2024 22:45"><a href="#chatlog__message-container-1307839158005530735">17/11/2024 22:45</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Based on suggestions by <span class="chatlog__markdown-mention" title="allthangs">@allthangs!!</span> I looked into add some form of Model-View-Controller support to LTK. Today I added a new class <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.Model</code> and enabled <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.Text</code> and <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.Input</code> as the first two View widgets that can be connected to a model. See the example in the KitchenSink called "MVC": <a href="https://pyscript.github.io/ltk/?tab=14">https://pyscript.github.io/ltk/?tab=14</a></span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="tada"><img alt="🎉" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f389.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div><div class="chatlog__message-container" data-message-id="1307839709052928103" id="chatlog__message-container-1307839709052928103"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="17 November 2024 22:48">22:48</div></div><div class="chatlog__message-primary"><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1307839708839153736/image.png?ex=691ba625&is=691a54a5&hm=a3639beaed21f4d6659b3697938440d0f60b401054d2ba38a2cab373436c99e8&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/image.png" title="Image: image.png (226.55 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1307842770911625347" id="chatlog__message-container-1307842770911625347"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="17 November 2024 23:00"><a href="#chatlog__message-container-1307842770911625347">17/11/2024 23:00</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Also quite interesting is <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.LocalStorageModel</code> that automatically saves changes in models into HTML localStorage. That makes creating a Todo app very easy: <a href="https://pyscript.com/@laffra/todo-app/latest?files=model.py">https://pyscript.com/@laffra/todo-app/latest?files=model.py</a></span> <span class="chatlog__edited-timestamp" title="17 November 2024 23:00">(edited)</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1307843209665450124" id="chatlog__message-container-1307843209665450124"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="17 November 2024 23:01">23:01</div></div><div class="chatlog__message-primary"><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1307843209417723976/image.png?ex=691ba967&is=691a57e7&hm=3ded78721a3c9dbe5ed6ba1d7889426c5063a2b40c0709c68df49bf0e60db13e&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/image.png" title="Image: image.png (129.01 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309055249289576529" id="chatlog__message-container-1309055249289576529"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="21 November 2024 07:18"><a href="#chatlog__message-container-1309055249289576529">21/11/2024 07:18</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">when i upgrade from pyscript 2024.10.1 to 10.2, I get this error in ltk. it goes away if i revert back to 10.1
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 523, in eval_code
.run(globals, locals)
^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/_pyodide/_base.py", line 357, in run
coroutine = eval(self.code, globals, locals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<exec>", line 2, in <module>
File "/lib/python3.12/site-packages/floofbytes/webui/manager.py", line 25, in __init__
self.menu_cont = ltk.Menu("Containers")
^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python3.12/site-packages/ltk/widgets.py", line 860, in __init__
self.label.on("click", proxy(lambda event: self.show(event)))
File "/lib/python3.12/site-packages/ltk/widgets.py", line 314, in on
return self.element.on(events, selector, data, proxy(handler))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "http://localhost/jquery/jquery-3.6.0.js", line 5906, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 5181, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 207, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 385, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 5182, in on/<
File "http://localhost/jquery/jquery-3.6.0.js", line 5266, in add
TypeError: Expected callable</code></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309081133803110470" id="chatlog__message-container-1309081133803110470"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/><div class="chatlog__reply-author" title="chrislaffra.">Chris Laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1307843209665450124')"> <em>Click to see attachment</em> <span>🖼️</span> </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="21 November 2024 09:01"><a href="#chatlog__message-container-1309081133803110470">21/11/2024 09:01</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Not sure why it's showing error message?</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1309081133408976956/Screenshot_2024-11-21_085826.png?ex=691c35cf&is=691ae44f&hm=4b2eeeef6931438ad6810326b1c9a648431d624594b82c840a9de9acd36984c7&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/Screenshot_2024-11-21_085826.png" title="Image: Screenshot_2024-11-21_085826.png (155.33 KB)"/> </a></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309146116583063585" id="chatlog__message-container-1309146116583063585"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="zobi5905">zobi</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1309081133803110470')"> Not sure why it's showing error message? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="21 November 2024 13:19"><a href="#chatlog__message-container-1309146116583063585">21/11/2024 13:19</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="zobi5905">@zobi</span> That probably happened because I was actively editing that example while you were looking at?</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309146992055681124" id="chatlog__message-container-1309146992055681124"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1309055249289576529')"> when i upgrade from pyscript 2024.10.1 to 10.2, I get this error in ltk. it goes away if i revert back to 10.1
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 523, in eval_code
.run(globals, locals)
^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/_pyodide/_base.py", line 357, in run
coroutine = eval(self.code, globals, locals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<exec>", line 2, in <module>
File "/lib/python3.12/site-packages/floofbytes/webui/manager.py", line 25, in __init__
self.menu_cont = ltk.Menu("Containers")
^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python3.12/site-packages/ltk/widgets.py", line 860, in __init__
self.label.on("click", proxy(lambda event: self.show(event)))
File "/lib/python3.12/site-packages/ltk/widgets.py", line 314, in on
return self.element.on(events, selector, data, proxy(handler))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "http://localhost/jquery/jquery-3.6.0.js", line 5906, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 5181, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 207, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 385, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 5182, in on/<
File "http://localhost/jquery/jquery-3.6.0.js", line 5266, in add
TypeError: Expected callable</code> </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="21 November 2024 13:22"><a href="#chatlog__message-container-1309146992055681124">21/11/2024 13:22</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">That is strange. Let me try the kitchensink on 2024.10.2</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309227868600926298" id="chatlog__message-container-1309227868600926298"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/><div class="chatlog__reply-author" title="chrislaffra.">Chris Laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1309146116583063585')"> <span class="chatlog__markdown-mention" title="zobi5905">@zobi</span> That probably happened because I was actively editing that example while you were looking at? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1060515719575515186" title="zobi5905">zobi</span> <span class="chatlog__timestamp" title="21 November 2024 18:44"><a href="#chatlog__message-container-1309227868600926298">21/11/2024 18:44</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">You need to add delete items as well there is just adding items.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1309624280551653418" id="chatlog__message-container-1309624280551653418"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/><div class="chatlog__reply-author" title="bananna.girl">CyberneticDaisy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1309055249289576529')"> when i upgrade from pyscript 2024.10.1 to 10.2, I get this error in ltk. it goes away if i revert back to 10.1
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 523, in eval_code
.run(globals, locals)
^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/_pyodide/_base.py", line 357, in run
coroutine = eval(self.code, globals, locals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<exec>", line 2, in <module>
File "/lib/python3.12/site-packages/floofbytes/webui/manager.py", line 25, in __init__
self.menu_cont = ltk.Menu("Containers")
^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python3.12/site-packages/ltk/widgets.py", line 860, in __init__
self.label.on("click", proxy(lambda event: self.show(event)))
File "/lib/python3.12/site-packages/ltk/widgets.py", line 314, in on
return self.element.on(events, selector, data, proxy(handler))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "http://localhost/jquery/jquery-3.6.0.js", line 5906, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 5181, in on
File "http://localhost/jquery/jquery-3.6.0.js", line 207, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 385, in each
File "http://localhost/jquery/jquery-3.6.0.js", line 5182, in on/<
File "http://localhost/jquery/jquery-3.6.0.js", line 5266, in add
TypeError: Expected callable</code> </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="22 November 2024 20:59"><a href="#chatlog__message-container-1309624280551653418">22/11/2024 20:59</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I have been able to reproduce the problem and the latest version of LTK should help. Can you try your application with PyScript 2024.10.2 and the latest LTK?</span> <span class="chatlog__edited-timestamp" title="22 November 2024 20:59">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1310363065749082112" id="chatlog__message-container-1310363065749082112"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="24 November 2024 21:55"><a href="#chatlog__message-container-1310363065749082112">24/11/2024 21:55</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><a href="https://bsky.app/profile/laffra.bsky.social/post/3lbpwyxz2kk2m">https://bsky.app/profile/laffra.bsky.social/post/3lbpwyxz2kk2m</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(17,133,254,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-author-container"><img alt="Author icon" class="chatlog__embed-author-icon" loading="lazy" onerror="this.style.visibility='hidden'" src="https://images-ext-1.discordapp.net/external/l1w_bx3XVaazmtLmxtKWeHXf7q1u0trhXuGsh0A-dXc/https/cdn.bsky.app/img/avatar/plain/did%3Aplc%3A4jtobvvmphtmpvm75aktqvqg/bafkreibnrt4jrlw5pollrrj32xk3biocxyzeizu7ez5nbkxv5ufqczfxbe%40jpeg"/> <a class="chatlog__embed-author-link" href="https://bsky.app/profile/laffra.bsky.social/post/3lbpwyxz2kk2m"><div class="chatlog__embed-author">Chris Laffra (@laffra.bsky.social)</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">At #PyDataGlobal 2024, I am teaching a 90-minute tutorial on how to write a Todo app in the browser using PyScript LTK. Join me and learn how to write reactive UIs, and call OpenAI.
All that in only 100 lines of Python and zero lines of JavaScript! <img alt="🚀" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f680.svg" title="rocket"/>
I hope to see you online on Dec 4.</div></div></div></div><div class="chatlog__embed-images chatlog__embed-images--single"><div class="chatlog__embed-image-container"><a class="chatlog__embed-image-link" href="https://images-ext-1.discordapp.net/external/2v_yOZD0BIagxrct28rKopjbhPvpGK-wHUCQ5tazzco/https/cdn.bsky.app/img/feed_thumbnail/plain/did%3Aplc%3A4jtobvvmphtmpvm75aktqvqg/bafkreigw3cmf3bso5bqz77uivoshpajaypv7ijwbo2mlg5727fhqqgtgdy%40jpeg"> <img alt="Image" class="chatlog__embed-image" loading="lazy" src="https://images-ext-1.discordapp.net/external/2v_yOZD0BIagxrct28rKopjbhPvpGK-wHUCQ5tazzco/https/cdn.bsky.app/img/feed_thumbnail/plain/did%3Aplc%3A4jtobvvmphtmpvm75aktqvqg/bafkreigw3cmf3bso5bqz77uivoshpajaypv7ijwbo2mlg5727fhqqgtgdy%40jpeg"/> </a></div></div><div class="chatlog__embed-footer"><img alt="Footer icon" class="chatlog__embed-footer-icon" loading="lazy" src="https://images-ext-1.discordapp.net/external/fOtqW7lF4a7HYINwfrkJNTaWjVlzy6NC7NtjERcNLDw/https/bsky.app/static/apple-touch-icon.png"/> <span class="chatlog__embed-footer-text"> Bluesky • 24/11/2024 21:24 </span></div></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1311712198489542708" id="chatlog__message-container-1311712198489542708"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/8f74a5596fd2bd4ab583d2480946d4ba.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="407964208743972880" title="jimbom.nc">jimbom_nc</span> <span class="chatlog__timestamp" title="28 November 2024 15:15"><a href="#chatlog__message-container-1311712198489542708">28/11/2024 15:15</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Will the PyData talks be available for viewing after their scheduled time? I am thinking about signing up to attend the virtual conference, but your tutorial (and other talks) on Weds conflicts with a teaching obligation I have.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1312027734536486983" id="chatlog__message-container-1312027734536486983"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/8f74a5596fd2bd4ab583d2480946d4ba.png"/><div class="chatlog__reply-author" title="jimbom.nc">jimbom_nc</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1311712198489542708')"> Will the PyData talks be available for viewing after their scheduled time? I am thinking about signing up to attend the virtual conference, but your tutorial (and other talks) on Weds conflicts with a teaching obligation I have. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="29 November 2024 12:09"><a href="#chatlog__message-container-1312027734536486983">29/11/2024 12:09</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Here are the recordings for 2020-2023. The recordings for PyData Global 2024 will end up there as well.</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1312109824636489758" id="chatlog__message-container-1312109824636489758"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/8f74a5596fd2bd4ab583d2480946d4ba.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="407964208743972880" title="jimbom.nc">jimbom_nc</span> <span class="chatlog__timestamp" title="29 November 2024 17:36"><a href="#chatlog__message-container-1312109824636489758">29/11/2024 17:36</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Ah, I see the talks here on YouTube, thanks!</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1312109831834042450" id="chatlog__message-container-1312109831834042450"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="29 November 2024 17:36">17:36</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><a href="https://www.youtube.com/@PyDataTV/playlists">https://www.youtube.com/@PyDataTV/playlists</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill chatlog__embed-color-pill--default"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://www.youtube.com/@PyDataTV/playlists"><div class="chatlog__markdown chatlog__markdown-preserve">PyData</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">PyData is an educational program of NumFOCUS, a 501(c)3 non-profit organization in the United States. PyData provides a forum for the international community of users and developers of data analysis tools to share ideas and learn from each other. The global PyData network promotes discussion of best practices, new approaches, and emerging techno...</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/NLAEAwoIAZlTDgY9wL7RLrASHxURF78n0Lyj0gwtmsQ/https/yt3.googleusercontent.com/ytc/AIdro_moRnnbS0PWvx8mbcZo38NexA8OW2naLtVk4tdLj2lsdg%3Ds900-c-k-c0x00ffffff-no-rj"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/NLAEAwoIAZlTDgY9wL7RLrASHxURF78n0Lyj0gwtmsQ/https/yt3.googleusercontent.com/ytc/AIdro_moRnnbS0PWvx8mbcZo38NexA8OW2naLtVk4tdLj2lsdg%3Ds900-c-k-c0x00ffffff-no-rj"/> </a></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="tada"><img alt="🎉" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f389.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1312192173869105183" id="chatlog__message-container-1312192173869105183"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/8f74a5596fd2bd4ab583d2480946d4ba.png"/><div class="chatlog__reply-author" title="jimbom.nc">jimbom_nc</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1312109824636489758')"> Ah, I see the talks here on YouTube, thanks! </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="29 November 2024 23:03"><a href="#chatlog__message-container-1312192173869105183">29/11/2024 23:03</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I forgot to paste the URL, but you found it yourself, I see <img alt="🤓" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f913.svg" title="nerd"/></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1312209762728935607" id="chatlog__message-container-1312209762728935607"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/8f74a5596fd2bd4ab583d2480946d4ba.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="407964208743972880" title="jimbom.nc">jimbom_nc</span> <span class="chatlog__timestamp" title="30 November 2024 00:13"><a href="#chatlog__message-container-1312209762728935607">30/11/2024 00:13</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Hey, no worries. Without your prompting, I wouldn't have thought to look around on YouTube. So many great videos posted from DjangoCon and PyCon, should have thought to check there before asking.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1312810544272769135" id="chatlog__message-container-1312810544272769135"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="01 December 2024 16:00"><a href="#chatlog__message-container-1312810544272769135">01/12/2024 16:00</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">LTK now has a built-in inspector. When you press Shift+Ctrl and move the mouse over a widget, LTK will show an inspector popup with details. If you run on PyOdide and develop using VS Code, you can even directly jump to the source code. Just add a line like the following to your code with the root of your project's source folder: <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.window.development_location = "C:/Users/laffr/dev/todo/src"</code> This is great for debugging, iterative development, learning, and explanation of a UI when doing a demo to stakeholders or peers.</span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1312810543962263633/Screenshot_2024-12-01_164912.png?ex=691bef58&is=691a9dd8&hm=d6516b736e78918913f6206063bb2ce5e7525f06c8b69106d367f0fa4aa93ca4&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/Screenshot_2024-12-01_164912.png" title="Image: Screenshot_2024-12-01_164912.png (215.92 KB)"/> </a></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1313135035754348594" id="chatlog__message-container-1313135035754348594"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="02 December 2024 13:29"><a href="#chatlog__message-container-1313135035754348594">02/12/2024 13:29</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><a href="https://github.com/laffra/slides">https://github.com/laffra/slides</a></span></div><div class="chatlog__attachment"><a href="https://cdn.discordapp.com/attachments/1228676369953587233/1313135035913736243/391561398-b4753662-3d1b-4f45-8503-342445fd202b.png?ex=691bcc0d&is=691a7a8d&hm=559eb8f2aa076ec4899c69715d233696724a316dbed8d4c943ac9d3e1819d53d&"> <img alt="Image attachment" class="chatlog__attachment-media" loading="lazy" src="assets/391561398-b4753662-3d1b-4f45-8503-342445fd202b.png" title="Image: 391561398-b4753662-3d1b-4f45-8503-342445fd202b.png (349.16 KB)"/> </a></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(30,35,39,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://github.com/laffra/slides"><div class="chatlog__markdown chatlog__markdown-preserve">GitHub - laffra/slides</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">Contribute to laffra/slides development by creating an account on GitHub.</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/DVP1NZEWBTobZkLyF5VxxEGAdizWn4zQ2m6via6XjZQ/https/opengraph.githubassets.com/4baf514189800d2d1b622664509ae12d6e9cfd35ade36edc807c0009b4c62f57/laffra/slides"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/DVP1NZEWBTobZkLyF5VxxEGAdizWn4zQ2m6via6XjZQ/https/opengraph.githubassets.com/4baf514189800d2d1b622664509ae12d6e9cfd35ade36edc807c0009b4c62f57/laffra/slides"/> </a></div></div></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1313297590389047427" id="chatlog__message-container-1313297590389047427"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/754d102262271ce7fec12a57ad525188.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/><div class="chatlog__reply-author" title="chrislaffra.">Chris Laffra</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1309624280551653418')"> I have been able to reproduce the problem and the latest version of LTK should help. Can you try your application with PyScript 2024.10.2 and the latest LTK? </span> <span class="chatlog__reply-edited-timestamp" title="22 November 2024 20:59">(edited)</span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="268520573179658240" title="bananna.girl">CyberneticDaisy</span> <span class="chatlog__timestamp" title="03 December 2024 00:15"><a href="#chatlog__message-container-1313297590389047427">03/12/2024 00:15</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">working fine with PyScript 2024.11.1 now</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1317604571316490432" id="chatlog__message-container-1317604571316490432"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="14 December 2024 21:30"><a href="#chatlog__message-container-1317604571316490432">14/12/2024 21:30</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">If the PYCON US submission system had voting buttons, I would ask you all to vote for this tutorial proposal <img alt="🤓" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f913.svg" title="nerd"/> . For now, please comment on this post or like it on LinkedIN. This will help get this proposal approved, I am sure.
<a href="https://www.linkedin.com/feed/update/urn:li:activity:7273759571817517056/">https://www.linkedin.com/feed/update/urn:li:activity:7273759571817517056/</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill chatlog__embed-color-pill--default"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://www.linkedin.com/feed/update/urn:li:activity:7273759571817517056/"><div class="chatlog__markdown chatlog__markdown-preserve">Chris Laffra on LinkedIn: I just submitted a tutorial to PYCON <img alt="🐍" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f40d.svg" title="snake"/> US...</div></a></div><div class="chatlog__embed-description"><div class="chatlog__markdown chatlog__markdown-preserve">I just submitted a tutorial to PYCON <img alt="🐍" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f40d.svg" title="snake"/> US <img alt="🗽" class="chatlog__emoji" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f5fd.svg" title="statue_of_liberty"/>2025. You can learn from the creator (me) how to write a Python browser app using PyScript's Reactive LTK…</div></div></div><div class="chatlog__embed-thumbnail-container"><a class="chatlog__embed-thumbnail-link" href="https://images-ext-1.discordapp.net/external/0H26yJow28GFN-L21L4PYS3qSAZv39pYq-IkB4qx3zU/%3Fe%3D2147483647%26v%3Dbeta%26t%3DuMMTiwjnZQqt7--OgMwtszGD59o-ZmX78N1o5jJfEWQ/https/media.licdn.com/dms/image/v2/D4E22AQHvZJdLFNMCeA/feedshare-shrink_800/B4EZPGVySmH0Ak-/0/1734199420819"> <img alt="Thumbnail" class="chatlog__embed-thumbnail" loading="lazy" src="https://images-ext-1.discordapp.net/external/0H26yJow28GFN-L21L4PYS3qSAZv39pYq-IkB4qx3zU/%3Fe%3D2147483647%26v%3Dbeta%26t%3DuMMTiwjnZQqt7--OgMwtszGD59o-ZmX78N1o5jJfEWQ/https/media.licdn.com/dms/image/v2/D4E22AQHvZJdLFNMCeA/feedshare-shrink_800/B4EZPGVySmH0Ak-/0/1734199420819"/> </a></div></div></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1336134548311904290" id="chatlog__message-container-1336134548311904290"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/983f4a46bc6bbb923308d86c7c714bdd.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="195674795944181760" title="edward_jazzhands">Edward Jazzhands</span> <span class="chatlog__timestamp" title="04 February 2025 00:41"><a href="#chatlog__message-container-1336134548311904290">04/02/2025 00:41</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Hey everyone, I am very intruiged by LTK. I was wondering if anyone has attempted to use it as a frontend for another python framework such as Django, Flask, or FastAPI?</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1336135025149874248" id="chatlog__message-container-1336135025149874248"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="04 February 2025 00:43">00:43</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Or perhaps if it might be possible to use LTK in combination with Django's templating system</span> <span class="chatlog__edited-timestamp" title="04 February 2025 00:43">(edited)</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1336383312138211380" id="chatlog__message-container-1336383312138211380"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1187506426164285554" title="honest_sparrow_44340">mrc</span> <span class="chatlog__timestamp" title="04 February 2025 17:10"><a href="#chatlog__message-container-1336383312138211380">04/02/2025 17:10</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Very much interested in this also. Long time Django dev. I've just been looking at Ltk Kitchensink - the Reactive tab looks promising.</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1344650893697486938" id="chatlog__message-container-1344650893697486938"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/8198d309e14cda70a02383ec0cc93e79.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="574555852275580939" title="jfranmatheu">JF</span> <span class="chatlog__timestamp" title="27 February 2025 12:42"><a href="#chatlog__message-container-1344650893697486938">27/02/2025 12:42</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">ltk looks awesome! I might give it a try for a project idea</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1344786215987183707" id="chatlog__message-container-1344786215987183707"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="27 February 2025 21:40"><a href="#chatlog__message-container-1344786215987183707">27/02/2025 21:40</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">FYI - The Reactive aspect of the ltk. Here's a demo project - mpy/py wit widget and reactive params. - <a href="https://pyscript.com/@neon22/starter-03-reactiveui/latest?files=main.py">https://pyscript.com/@neon22/starter-03-reactiveui/latest?files=main.py</a></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1344793923603927080" id="chatlog__message-container-1344793923603927080"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/0.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="924298229191938048" title="magulan301133">magulan30</span> <span class="chatlog__timestamp" title="27 February 2025 22:10"><a href="#chatlog__message-container-1344793923603927080">27/02/2025 22:10</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">How to make POST request without Proxy. It is working only when I use proxy. Else, I am getting CORS error. Any help?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1344865083687174218" id="chatlog__message-container-1344865083687174218"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="28 February 2025 02:53"><a href="#chatlog__message-container-1344865083687174218">28/02/2025 02:53</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">please stop spamming every thread</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1348705763488694422" id="chatlog__message-container-1348705763488694422"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/6e3d708f4f9680a9c7bb76a916c623d8.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/0.png"/><div class="chatlog__reply-author" title="magulan301133">magulan30</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1344793923603927080')"> How to make POST request without Proxy. It is working only when I use proxy. Else, I am getting CORS error. Any help? </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1084780393548480513" style="color:rgb(26,194,181)" title="agiammarchi">Andrea Giammarchi</span> <span class="chatlog__timestamp" title="10 March 2025 17:15"><a href="#chatlog__message-container-1348705763488694422">10/03/2025 17:15</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve"><a href="https://discord.com/channels/972017612454232116/1195794694622421082/1345078155790258222" onclick="scrollToMessage(event, '1345078155790258222')">https://discord.com/channels/972017612454232116/1195794694622421082/1345078155790258222</a></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1349041391715749888" id="chatlog__message-container-1349041391715749888"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="797355255695409173" title="andy55597">Andy</span> <span class="chatlog__timestamp" title="11 March 2025 15:28"><a href="#chatlog__message-container-1349041391715749888">11/03/2025 15:28</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Hi everyone,
I recently discovered pyscript and ltk, and I think they are awesome projects.
For one of my experimental apps, I've been trying to fetch some data from a third-party API with <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.get()</code>, but am constantly getting <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Cross-Origin Request Blocked: (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 200</code> errors.
Minimal example showing the error: <a href="https://pyscript.com/@doks5/test-url-check/latest?files=main.py">https://pyscript.com/@doks5/test-url-check/latest?files=main.py</a>
I am clearly doing something wrong, so any hints how to fix the error will be much appreciated
Thanks</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1349105670313607209" id="chatlog__message-container-1349105670313607209"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/4.png"/><div class="chatlog__reply-author" title="andy55597">Andy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1349041391715749888')"> Hi everyone,
I recently discovered pyscript and ltk, and I think they are awesome projects.
For one of my experimental apps, I've been trying to fetch some data from a third-party API with <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">ltk.get()</code>, but am constantly getting <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Cross-Origin Request Blocked: (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 200</code> errors.
Minimal example showing the error: <a href="https://pyscript.com/@doks5/test-url-check/latest?files=main.py">https://pyscript.com/@doks5/test-url-check/latest?files=main.py</a>
I am clearly doing something wrong, so any hints how to fix the error will be much appreciated
Thanks </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="11 March 2025 19:44"><a href="#chatlog__message-container-1349105670313607209">11/03/2025 19:44</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">for fetch try this: <a href="https://docs.pyscript.net/2025.2.4/api/#pyscriptfetch">https://docs.pyscript.net/2025.2.4/api/#pyscriptfetch</a>
for mini-coi try this: <a href="https://docs.pyscript.net/2025.2.4/user-guide/workers/#option-1-mini-coi">https://docs.pyscript.net/2025.2.4/user-guide/workers/#option-1-mini-coi</a></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1362071662413217852" id="chatlog__message-container-1362071662413217852"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="489797804861030411" title="agile_prg">agile_prg</span> <span class="chatlog__timestamp" title="16 April 2025 15:26"><a href="#chatlog__message-container-1362071662413217852">16/04/2025 15:26</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I am trying to learn ltk, I have some very basic questions if anyone has a few minutes</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1362165268197015623" id="chatlog__message-container-1362165268197015623"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="16 April 2025 21:38"><a href="#chatlog__message-container-1362165268197015623">16/04/2025 21:38</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Ask away</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1362165449973829724" id="chatlog__message-container-1362165449973829724"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="16 April 2025 21:39">21:39</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Have you seen the kitchensink ? - <a href="https://pyscript.github.io/ltk/?tab=2&runtime=mpy">https://pyscript.github.io/ltk/?tab=2&runtime=mpy</a></span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1362203697345466368" id="chatlog__message-container-1362203697345466368"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="489797804861030411" title="agile_prg">agile_prg</span> <span class="chatlog__timestamp" title="17 April 2025 00:11"><a href="#chatlog__message-container-1362203697345466368">17/04/2025 00:11</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I have seen kitchen sink, it is too large for me to easily understand</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1362217872205545684" id="chatlog__message-container-1362217872205545684"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="17 April 2025 01:07"><a href="#chatlog__message-container-1362217872205545684">17/04/2025 01:07</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">each page is its own code. Have a look at this instead then: <a href="https://pyscript.com/@neon22/starter-02-ltkui/latest">https://pyscript.com/@neon22/starter-02-ltkui/latest</a> and then <a href="https://pyscript.com/@neon22/starter-03-reactiveui/latest">https://pyscript.com/@neon22/starter-03-reactiveui/latest</a> trying to get them into examples</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1362433348223369256" id="chatlog__message-container-1362433348223369256"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="489797804861030411" title="agile_prg">agile_prg</span> <span class="chatlog__timestamp" title="17 April 2025 15:23"><a href="#chatlog__message-container-1362433348223369256">17/04/2025 15:23</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">that is very, very, very kind of you thanks</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1364156413940732004" id="chatlog__message-container-1364156413940732004"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/d371b9226619916355e6b88faf31b627.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="1242599857655644164" title="chrislaffra.">Chris Laffra</span> <span class="chatlog__timestamp" title="22 April 2025 09:30"><a href="#chatlog__message-container-1364156413940732004">22/04/2025 09:30</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Watch this in-depth PyData Global 2024 tutorial on how to write a web app in PyScript. It highlights the use of LTK and shows a couple of applications that leverage both MicroPython and PyOdide, use external JS libraries, and import packages from PyPI. <a href="https://www.youtube.com/watch?v=J2XOSdDWPIo">https://www.youtube.com/watch?v=J2XOSdDWPIo</a></span></div><div class="chatlog__embed"><div class="chatlog__embed-color-pill" style="background-color:rgba(255,0,0,255)"></div><div class="chatlog__embed-content-container"><div class="chatlog__embed-content"><div class="chatlog__embed-text"><div class="chatlog__embed-author-container"><a class="chatlog__embed-author-link" href="https://www.youtube.com/channel/UCOjD18EJYcsBog4IozkF_7w"><div class="chatlog__embed-author">PyData</div></a></div><div class="chatlog__embed-title"><a class="chatlog__embed-title-link" href="https://www.youtube.com/watch?v=J2XOSdDWPIo"><div class="chatlog__markdown chatlog__markdown-preserve">Chris Laffra - PyScript - Writing a Python application in the brows...</div></a></div><div class="chatlog__embed-youtube-container"><iframe class="chatlog__embed-youtube" height="225" src="https://www.youtube.com/embed/J2XOSdDWPIo" width="400"></iframe></div></div></div></div></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="heart"><img alt="❤️" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/2764.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374485679739895859" id="chatlog__message-container-1374485679739895859"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="797355255695409173" title="andy55597">Andy</span> <span class="chatlog__timestamp" title="20 May 2025 21:35"><a href="#chatlog__message-container-1374485679739895859">20/05/2025 21:35</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Hi,
I have a project that uses ltk and works fine on Pyodide, but the moment I switch it to MicroPython, it throws an error
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">micropython.mjs:1 Aborted(Assertion failed: stringToUTF8Array expects a string (got symbol))
error.js:15 RuntimeError: Aborted(Assertion failed: stringToUTF8Array expects a string (got symbol))
at abort (micropython.mjs:1:14749)
at assert (micropython.mjs:1:9826)
at stringToUTF8Array (micropython.mjs:1:30547)
at stringToUTF8 (micropython.mjs:1:81432)
at stringToUTF8OnStack (micropython.mjs:1:90640)
at string (micropython.mjs:1:90806)
at Object.ccall (micropython.mjs:1:91309)
at Object.get (micropython.mjs:1:112548)
at Proxy.toString (<anonymous>)
at w (jquery.min.js:2:986)</code>
The package versions that the project uses are:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css
https://pyscript.net/releases/2025.2.3/core.css
https://pyscript.net/releases/2025.2.3/core.js
https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js
https://cdn.jsdelivr.net/npm/jquery-ui@1.14.1/dist/jquery-ui.min.js
https://cdn.jsdelivr.net/npm/jquery-ui@1.14.1/dist/themes/base/jquery-ui.min.css</code>
Has anyone else observed similar behaviour?</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374489490726457456" id="chatlog__message-container-1374489490726457456"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="20 May 2025 21:50"><a href="#chatlog__message-container-1374489490726457456">20/05/2025 21:50</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">I'm using <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">jquery-ui 1.13.2</code> I have had bugs similar to this where I am not using pyscript.ffi.to_js properly. This kind of error points (I think) to not sending python data back to JS side in proper form. Having said that I also had some difficulty with images, videos and SVG when I was using ltk.Image for example. Try commenting out portions of the UI until it works maybe...</span></div></div></div></div><div class="chatlog__message-container" data-message-id="1374489592757227622" id="chatlog__message-container-1374489592757227622"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="20 May 2025 21:50">21:50</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">expects a string - got a symbol is your primary indicator</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374503358118760580" id="chatlog__message-container-1374503358118760580"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="797355255695409173" title="andy55597">Andy</span> <span class="chatlog__timestamp" title="20 May 2025 22:45"><a href="#chatlog__message-container-1374503358118760580">20/05/2025 22:45</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Well, I managed to reproduce the error with just this: <a href="https://pyscript.com/@doks5/mpy-vs-py-test/latest?files=main.py,index.html,pyscript_pyodide.toml,pyscript_mpy.toml">https://pyscript.com/@doks5/mpy-vs-py-test/latest?files=main.py,index.html,pyscript_pyodide.toml,pyscript_mpy.toml</a>
Which makes things even more confusing, and now I'm thinking, if something with the browsers that I'm using could be causing the issue.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374698417720131624" id="chatlog__message-container-1374698417720131624"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/4.png"/><div class="chatlog__reply-author" title="andy55597">Andy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1374503358118760580')"> Well, I managed to reproduce the error with just this: <a href="https://pyscript.com/@doks5/mpy-vs-py-test/latest?files=main.py,index.html,pyscript_pyodide.toml,pyscript_mpy.toml">https://pyscript.com/@doks5/mpy-vs-py-test/latest?files=main.py,index.html,pyscript_pyodide.toml,pyscript_mpy.toml</a>
Which makes things even more confusing, and now I'm thinking, if something with the browsers that I'm using could be causing the issue. </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="21 May 2025 11:40"><a href="#chatlog__message-container-1374698417720131624">21/05/2025 11:40</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">OK. I changed one line:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">ltk.Paragraph("MicroPython VS Pyodide").appendTo(ltk.window.document.body)</code>
instead of:
<code class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">ltk.find("body").append(ltk.Paragraph("MicroPython VS Pyodide"))</code></span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="heart"><img alt="❤️" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/2764.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div><div class="chatlog__message-container" data-message-id="1374699370057830460" id="chatlog__message-container-1374699370057830460"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="21 May 2025 11:44">11:44</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">A massaged clone of yours is here with a slightly diff initialization approach. <a href="https://pyscript.com/@neon22/mpy-vs-py-test-copy/latest?files=main.py,index.html">https://pyscript.com/@neon22/mpy-vs-py-test-copy/latest?files=main.py,index.html</a>
I would suggest you have a look at this tutorial demo I made. Its for making non-demo ltk based apps with Reactive UI elements: - <a href="https://pyscript.com/@neon22/starter-03-reactiveui/latest">https://pyscript.com/@neon22/starter-03-reactiveui/latest</a></span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="heart"><img alt="❤️" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/2764.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div><div class="chatlog__message-container" data-message-id="1374699980387909804" id="chatlog__message-container-1374699980387909804"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__short-timestamp" title="21 May 2025 11:46">11:46</div></div><div class="chatlog__message-primary"><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">also suggest you move to 2025.3.1 core in index.html.</span></div><div class="chatlog__reactions"><div class="chatlog__reaction" title="thumbsup"><img alt="👍" class="chatlog__emoji chatlog__emoji--small" loading="lazy" src="https://cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f44d.svg"/> <span class="chatlog__reaction-count">1</span></div></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374751640988418108" id="chatlog__message-container-1374751640988418108"><div class="chatlog__message"><div class="chatlog__message-aside"><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__header"><span class="chatlog__author" data-user-id="797355255695409173" title="andy55597">Andy</span> <span class="chatlog__timestamp" title="21 May 2025 15:12"><a href="#chatlog__message-container-1374751640988418108">21/05/2025 15:12</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Thank you!</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1374970183398981653" id="chatlog__message-container-1374970183398981653"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/4.png"/><div class="chatlog__reply-author" title="andy55597">Andy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1374751640988418108')"> Thank you! </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="22 May 2025 05:40"><a href="#chatlog__message-container-1374970183398981653">22/05/2025 05:40</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Oh yeah - and please let me know how you get on with PDF.js. I see you have an esm version. You can load it with js.modules for easier access via python (not sure if pyodide only or not). jsmodules docs here: <a href="https://docs.pyscript.net/2025.3.1/user-guide/configuration/#javascript-modules">https://docs.pyscript.net/2025.3.1/user-guide/configuration/#javascript-modules</a>
I used fpdf2 a pypi package (so pyodide only) in toml as <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">packages = [ "pyscript-ltk==0.2.20", "fpdf2==2.8.1"]</code> but pdf.js may be much better</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1385133703839088640" id="chatlog__message-container-1385133703839088640"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/4.png"/><div class="chatlog__reply-author" title="andy55597">Andy</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1374751640988418108')"> Thank you! </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="353381017140068352" title="neon22.">Neon22</span> <span class="chatlog__timestamp" title="19 June 2025 06:46"><a href="#chatlog__message-container-1385133703839088640">19/06/2025 06:46</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Actually you lib <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">pdf.js</code> reads pdfs and my example 'fpdf2' is actually about writing pdfs. So no real comparison. how did you get on</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1385150274041020456" id="chatlog__message-container-1385150274041020456"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/4.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><img alt="Avatar" class="chatlog__reply-avatar" loading="lazy" src="assets/5f426af01ce7829af9390e70182a8870.png"/><div class="chatlog__reply-author" title="neon22.">Neon22</div><div class="chatlog__reply-content"><span class="chatlog__reply-link" onclick="scrollToMessage(event,'1385133703839088640')"> Actually you lib <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">pdf.js</code> reads pdfs and my example 'fpdf2' is actually about writing pdfs. So no real comparison. how did you get on </span></div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="797355255695409173" title="andy55597">Andy</span> <span class="chatlog__timestamp" title="19 June 2025 07:52"><a href="#chatlog__message-container-1385150274041020456">19/06/2025 07:52</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Unfortunately, I've been busy at work, and haven't had time to work on it.
Will ping you when I have some progress.</span></div></div></div></div></div>
<div class="chatlog__message-group"><div class="chatlog__message-container" data-message-id="1432079547720929425" id="chatlog__message-container-1432079547720929425"><div class="chatlog__message"><div class="chatlog__message-aside"><div class="chatlog__reply-symbol"></div><img alt="Avatar" class="chatlog__avatar" loading="lazy" src="assets/f7f2e9361e8a54ce6e72580ac7b967af.png"/></div><div class="chatlog__message-primary"><div class="chatlog__reply"><div class="chatlog__reply-unknown">Original message was deleted or could not be loaded.</div></div><div class="chatlog__header"><span class="chatlog__author" data-user-id="1398428592098115617" title="maconic_93367">maconic</span> <span class="chatlog__timestamp" title="26 October 2025 18:52"><a href="#chatlog__message-container-1432079547720929425">26/10/2025 18:52</a></span></div><div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">Does spam like this actually work? I doubt you'll find any success here.</span></div></div></div></div></div>
</div>
<div class="postamble"><div class="postamble__entry">Exported 125 message(s)</div><div class="postamble__entry">Timezone: UTC+0</div></div>
</body></head></html>