I understand relational databases fairly well and can create and manage them from scratch. Now I want to learn how to build real-world desktop applications that connect to and work with those databases. I have some experience with Python and Tkinter, but I'm open to learning another language or framework. I'm especially interested in strong relational-database support, a reasonable learning curve, practical desktop tooling, and technologies that are still relevant today. What would you recommend, and what would you choose if you were starting from scratch?
4 Answers
For a Windows-first application, C# with .NET and WPF is probably the most mature choice. The tooling, database libraries, data binding, and Visual Studio support make this combination productive for business-style desktop applications. Entity Framework Core is a common option for working with relational databases. If you need cross-platform .NET, Avalonia UI is worth investigating, although it may require more manual setup than WPF.
You don’t necessarily need to leave Python. PySide6 is a strong alternative to Tkinter because it provides Python bindings for Qt, along with database support through QtSql and useful table-model components. The database concepts and SQL work are largely the same regardless of the language, so staying with Python may let you focus on application design instead of learning an entirely new ecosystem.
That makes sense. I may try building a small project in Python first. Was the hardest part mainly learning the UI framework, or was it organizing the application and keeping the database code separate from the interface?
The architecture may matter more than the language. For a single-user application, connecting directly to a local SQLite database can be perfectly reasonable. If several desktop clients need to use a shared remote database, it is safer to place an API or service between the applications and the database rather than distributing database credentials to every client. I’d build the same small inventory application in PySide6 and C# to compare development speed, deployment, maintainability, and how comfortable each feels.
C# is a practical starting point for Windows because it handles the amount of plumbing needed for desktop interfaces more easily than lower-level choices such as C++ or Rust. Java with JavaFX can also work for cross-platform applications, and Go with a desktop toolkit is another option, but those choices may involve more assembly or have smaller ecosystems for this particular type of business application. If you are targeting macOS specifically, Swift and Apple’s native frameworks are the usual path.

Are there any learning resources you would recommend for getting started with C# and .NET desktop development?