A .py file is an actual programme when you run it BUT...
Hey, founder of Anvil here - "end-to-end Python" is exactly what we do!
Anvil is a replacement for the whole web framework in pure Python - no HTML, no JS, no HTTP API requred[*]. Your client side code is in Python, your server-side code is in Python, you can call straight from one to the other - and you can publish it instantly on the web. It's astonishing how fast a good Python developer can put up a web app!
As well as our hosted service (which has a free tier), we also provide on-site installations for people who need their apps on their own servers. I'm happy to answer any questions.
[*] Unless you want those things, that is. You can use custom HTML layouts, and working with REST APIs is pretty slick.
> >give me Visual Basic 6's UI builder and all the greatness of a 21st century machine, so that I could finally whip up an UI without yelling profanities at the CSS reference [...] that clearly just wasn't built for this
> Can I interest you in a VB6-y design/code/deploy tool with no CSS or JS? It's all in Python, even in-browser: https://anvil.works
> unironically and seemingly willingly using Visual Basic in 2018
Try to reformulate the question somehow, because now it extremely broad.
We can do text! Here's the blog post version:
https://anvil.works/blog/announcing-new-editor
Or my (rather less formal) post to the Anvil forum: https://anvil.works/forum/t/announcing-the-new-anvil-editor-beta/9756
This is exactly what the group_name property is for. Just call get_group_value() on any radio button in a group, and it will return the value property of whichever radio button in that group is selected. (A group of radio buttons is all the radio buttons whose group_name property has the same value)
There's more info (and examples) in the reference docs here.
Does that help solve your problem?
Creating a webapp is the easiest way, otherwise you will need everyone to install Python and be able to install all of the libraries your programme depends on, which can be problematic.
You can create a webapp entirely in Python using Anvil.Works or consider using flask and following the tutorial on the blog of PythonAnywhere.com - you can try it out using the free tier.
This is exactly the kind of thing we're trying to make easy. Right now you can connect to a Google Sheet as your DB, which lets you to just build the customer-facing parts of the app and use the Sheets interface for general admin if necessary. That means you can get something online and working really quickly. Take a look at our Getting Started Guide for an simple example.
If you want to connect to an in-house DB, you can absolutely use the Uplink service for that. Also look out for services to connect to specific DBs coming soon.
Hi, author here. Yes, repeating data is essential and we do support it - you can create forms for individual widgets and then add them to containers dynamically. We show a very simple version of that in the 'Custom Components' section of our Getting Started Guide. We'll be releasing more elaborate data binding mechanisms soon, so do keep an eye out for those.
You're entirely right that we don't have a select
element yet. Well spotted - we'll get right on it!
Take a look at anvil.works - full stack web all in Python. Free tier and the Anvil Runtime Engine is open sources and can be self hosted (docker is an option).
Very easy to create a web front end to your programme. You can even have a front end that executes Python code on your own computing resources if you want.
A few people have mentioned Anvil (our end-to-end Python environment) in this thread. I actually gave a lightning talk at PyCon this year about how we do front-end Python:
Compiling Python to Javascript (video + transcript)
Thanks! That's exactly the kind of thing we want to support.
We can certainly provide a customer-hosted version of Anvil - we've designed the architecture with this in mind. It's part of our enterprise package, do drop us an email to if you'd like to learn more about that.
On the other hand, if you just want to connect to backend services rather than host the entire platform, check out our Uplink Service, which would let you do just that.
Hope that helps!
Brython - Python in the browser. Or consider using anvil.works, which offers full stack development entirely in Python (using the Skulpt compiler Python -> javascript for the client side). Free tier available, or self host the open source engine.
For desktop apps, QT (PyQT/PySide) is quite capable.
If you want to create web-based front-ends but don't want to code in JavaScript, you can use Transcrypt to code to JavaScript APIs using Python. I do this myself with React and Material-UI. I did a write-up on how that works.
Another alternative is to use Anvil. It's like VB for the web, but uses Python for coding. I haven't used it myself yet tbh, but I think it would work pretty well for CRUD type applications.
You just need to pick a toolchain that works for you and dig in.
Full disclosure: I work for Anvil.
Anvil is a free low code platform which has an open source app server and runtime which let's you host your own apps on any machine:
https://github.com/anvil-works/anvil-runtime
I'm currently unaware of alternatives other platforms offer, although if you do find them it'd be great to hear about how they handle this issue.
Happy to answer any questions or remove this post if it breaks the subs rules.
Django is the place I got started and it is good framework to learn that will also teach OP lots of other useful development skills.
If OP is completely new to web development, a platform like is Anvil can also be useful. You can create whole web apps in Python, this includes the frontend (the user interface and what the web app looks like) and backend (how you handle data).
If you want to do something quickly and relatively easily, sticking with Python, then take a look at anvil.works - "Full stack webapps with nothing but Python".
FastAPI is always worth having on the list these days, alongside Flask, but really it depends how sophisticated a webapp you are trying to do and what other services you intend to provide. Django his highly opinionated and includes everything bar the kitchen sink (but how you fit one is pretty fixed).
Does it have to be self-contained, or are you allowed to build it on service on the internet?
If the latter, the easiest approach is to use anvil.works, which has a free tier.
Otherwise, you need to learn the basics of Python and a web framework like Flask.
The hosting website Python Anywhere, which provides a full remote Python environment, has an excellent step-by-step tutorial on creating a simple comment form website that you should be able to adapt to a questionnaire.
You can try can follow the tutorial on their website, and build it there on the free tier. You can then use the same code on your own computer with Python and flask installed.
This is kinda niche but https://anvil.works/ can build dashboards using drag and drop front end and python backend. My background is all python data analysis so to have the drag and drop as a way to build a ui front end has been a godsend
Take a look at flask
, probably the most popular framework for simple web based apps. There's a complete walk through on PythonAnywhere.com's blog and you can try it out on their free tier to produce a complete working website.
Also take a look at anvil.works which let's you do it all in Python without using a framework like flask.
It is git! (see the docs)
And you can absolutely check it out, and even deploy it on your own hardware (there are how-tos)
What is the specific problem you're stuck on? Try and be as specific as possible and ask something like:
"How do I use Python's datetime library to delete/disable a row of data after 3 days? Here is what I've tried: <your code>"
I'd say the best place to get help will be on the Anvil forum and before you post I'd recommend you read this:
https://anvil.works/forum/t/how-to-ask-a-good-question/21
People will be happy to help solve individual problems but they won't do your homework for you.
You might pay a visit to https://anvil.works, and see whether their approach appeals to you. It's much simpler to set up an Anvil app, than setting up your own web site with Flask et al.
The most commonly used approach for simple applications is to use the Flask
framework, and the best practical guide I have seen is on the Python Anywhere site blog.
You can use the free tier on their site to create a working web service using Flask
that anyone should be able to link to over the internet. (Don't put any sensitive company information on there of course.)
You can then use the knowledge learned to build a local working version of your code using the webserver that comes with Flask for test purposes.
Once you've nailed that, you can discuss with your IT Function the hosting arrangements. If they offer AWS access, then things should be very easy for you.
There are alternatives. The Django
framework is heavy duty (it powers Instagram, for example). I like CherryPy
, which I find easier than Flask
.
I am also a fan of anvi.work which lets you build a working website entirely in Python (without even the minimal html/css/javascript you can get away with for Flask
) - this also offers a free hosting tier, but your company might not want company stuff there. A paid plan lets you protect this, and the core engine is open source and can be self hosted (a more complex conversation with your IT function).
You can do some drag and drop of the UI using Anvil and create a web application using just Python.
The underlying engine is open source so you can self host if you want more resources than they offer in their free tier and cannot justify/afford the fees for higher tiers.
You may want to check out Anvil, it's low-code Python web apps with an easy to use UI designer.
As you're a Python developer, it will allow you to build a front and back end all in Python and connect any apps you have on your machine or VM with their uplink.
You'd be better off to start with an existing browser. Like Firefox then try to rip it apart and see if you can reassemble and extend the pieces that you want.
E.g. most of Firefox is actually JavaScript modules assembling and dis/enabling the various C++/Rust/other components of the browser. You can dig into the internals and find quite a bit of it is accessable with just unzipping some files and playing with json configs.
Edit: a few more ideas for your multi language support idea off the top of my head:
Someone else below said webassembly jokingly. This is probably the most a viable (but rough) option depending on your actual goal.
another option is to look at how other environments like electron (or other standalone browser app environments) work. They might give some insight on how to extend the standard JS lib that is accessible in the DOM.
Another approach might be too look at how Java applets ran in various browsers (and formerly Flash). The object tag and plugins have mostly been removed, but might still exist in the codebase behind flags. In that case you could write your own plugin.
Last idea... either cross compile your language to JavaScript (similar to the wasm route) or write a JavaScript interpreter for your target language. These blog posts are interesting here:
I recently posted a related question over at r/learnpython. The TL;DR is yes, there are several options for building web apps in full Python, most notably Anvil and JustPy. If you feel at home with Python, you can build web apps with just that. If you want to get serious with web development, though, there’s practically no way around JavaScript.
I am still new learning python, but I found anvil.works and I am able to launch a simple crud web app in a couple of hours. I am currently building a task management app and it took me less than 1 hr to do this.
Check out Anvil: https://anvil.works/learn/tutorials/dashboard
I'm using Anvil for my own project and planning on a dashboard, but it has all the features I need for an MVP Saas app.
Yes--take a look at anvil.works. It's all Python and has the features you're looking for.
I'm trying it for my own project and I think you'll be pleasantly surprised. I went with anvil because although I'm technical and have done a lot of programming over the years that experience is not as a full stack developer and it's getting so complicated and crowded. I had started to go down the Django path previously.
DISCLAIMER: I have no affiliation with Anvil other than as a satisfied customer.
If this doesn't get squashed and you have some more questions I'll be happy to provide more about my own experience.
Not sure if this helps, but you can check out Anvil.works. I am also a beginner and this lets you create a web based python application with python online. The only issue is that the free version may not have all the packages you need, but they have a paid version 50/month that will give you that.
Anvil! executes your Python code and much more. I fell in love with it because it reminded me of the good old VB6 (only old people like me can understand). I use it both for fun at home and as the main development tool in our company. You can write Python code on both client and server side. Client functions can call server functions and get the returned value. The IDE allows you to create forms dragging buttons, text boxes, check boxes, etc. It comes with a bunch of services like database, sending and receiving emails, user management, etc. You don't need to deal with javascript, html, sql, firewalls, containers, servers, database server, etc.
https://anvil.works is worth a look.
Full stack python (browser and back end), drag and drop form builder, all web based. I'm a heavy user, and I use it for commercial products.
I’m trying to sell a web app I made for the first time. And, uh, it’s significantly more work that actually building the application.
Checkout this video about building out a small app into a SAAS. Taking payments probably starts around 35 minutes.
Not that I know of - you'll have to create a webapp for that (using django or flask or similar). Note that you won't be able to have the rich interaction you have in tkinter without javascript.
Another more friendly (but locked in) route is Anvil.
Are you interested in the DBs or just the views? If you've already got the data somewhere, and you just want to build a dashboard, I'm going to plug Anvil here. You can get data out of anything you can connect to with Python, and display it with a fully visually-designed UI, including plots with the Plotly API. We recently published a walkthrough of creating a simple dashboard from a Postgres DB: