May 12, 2023

Выбор средств разработки для создания настольного приложения на python

During my research, I found various sources discussing the development of desktop applications using Python, including articles, blogs, and Reddit discussions. The sources provided different recommendations for frameworks and libraries, with some consensus on popular choices like PyQt, Tkinter, and Kivy. However, there were also varying opinions on ease of use, licensing, and whether Python is suitable for GUI development. Based on the information gathered, I will provide a summary of the most recommended options and their respective features, advantages, and limitations.

Words

454

Time

5m 53s

Contributors

482

Words read

37.9k


Jump to research

Composed by

Profile picture

Г.

Views

240

Version history

Г., 483d ago

Have an opinion? Send us proposed edits/additions and we may incorporate them into this article with credit.

Tkinter

Tkinter

Tkinter is one of the most popular programming frameworks for desktop applications and GUIs. It is known for its simplicity, ease of use, and wide community support. However, Tkinter's appearance is considered outdated by some users, and it may not provide a modern look and feel for certain applications.
Kivy

Kivy

Kivy is a newer framework, primarily written in Python, that is suitable for developing mobile-oriented interfaces and desktop applications. It is known for its GPU acceleration, customizable look and feel, and a design language called Kv. Kivy is recommended for its good architecture and documentation, but it has a smaller community, which may limit the availability of support and resources.

PySimpleGUI

PySimpleGUI is a simple framework that is easy for beginners to use and integrates well with other frameworks like Qt, Tkinter, and WxPython. It is recommended for learning GUI development but may not be suitable for production-ready applications.
DearPyGUI

DearPyGUI

DearPyGUI is a feature-rich framework with good documentation and tutorials. It is actively maintained and updated, with developers responsive to user feedback and issue resolution. Some users have reported positive experiences using DearPyGUI for simple and efficient GUI development.

Other Options and Considerations

Some users also suggested alternatives like Toga, Eel, and web-based frameworks such as Anvil or Django, but these options were not as widely recommended as the ones mentioned above. There was a debate about whether Python is suitable for creating GUI applications, with some users arguing that it may result in hacky, buggy software, while others disagreed.

Jump to top

Research

"Best python GUI to learn?"

  • A Reddit user asked for suggestions on the best Python GUI to learn, which led to 27 comments
  • PyQt is suggested by a user since it is easy to learn and aesthetic, and provides a shortlist of other GUI options
  • A user suggests PySide2 for Qt, which is the official Python binding that has a more liberal license than PyQt
  • Kivy is recommended for good separation of GUI and Python code, making it clean and simple to use
  • Users recommend tkinter for easy setup without installation
  • Other users find tkinter too basic and recommend PySimpleGUI over it
  • While Kivy is not recommended as esoteric, some users find it confusing
  • A tutorial with a couple of basic tkinter lines is suggested for beginners and simple projects
  • Qt is suggested for cross-platform capabilities, and PySimpleGUI is a good meta-framework that uses tkinter and other GUI options
  • Flask and Django are full-fledged web frameworks, and are easier and recommended for web-based interfaces
  • A user suggests a couple of HTML/CSS tutorials for the creation of a web-based GUI
  • JavaScript is highly recommended as the best option for desktop appdevelopment, but comes with increased complexity
  • A user cautions against cross-platform options and suggests learning platform-specific GUI solutions instead
  • SDL/Pygame are suggested as a good GUI framework for both games and other applications, although not the conventional framework
  • A user likes wxPython but admits that it has issues with outdated versions and documentation
  • A couple of libraries, MongoDB and SQLAlchemy, are suggested for backend development
  • Users suggest learning backend development and database management along with GUI
  • A user suggests getting familiar with HTML, CSS, and JavaScript for GUI and web development, respectively
  • A user recommends KivyMD for creating mobile apps with Kivy
  • A user suggests dearpygui as a good GUI library with a neat style and active subreddit/discord
  • Dash is highly recommended for data science dashboards, but not recommended for product design
  • A user suggests using QtDesigner for easy graphics development since it uses drag and drop option
  • A couple of options for cross-platform GUI solutions: Terminal.Gui and cross-platform dotnet/C# frameworks that support Windows, macOS and Linux
  • SDL/Pygame is suggested for using with Kivy for increasing GUI flexibility
  • Flask is suggested for hosting your desktop solution on localhost for running your GUI
  • PySimpleGUI is highly recommended for easy creation of basic GUIs using tkinter, with better look and feel

"What's a good Python Gui framework to learn worth my time ?"

  • The Reddit thread includes a discussion of different Python GUI frameworks that could be used for creating a desktop application with Python
  • Tkinter is a highly recommended framework that is known for its simplicity, documentation, and community support. However, its appearance is outdated and there is no good designer available
  • PyQT/PySide is another popular choice, which has a lot more functionality than Tkinter, including CSS for styling individual components. However, licensing is complicated and there are not many good tutorials available
  • Kivy is a newer framework with cross-platform support and native Python. It is known for its GPU acceleration and good architecture. Its documentation and tutorials are considered good, but there is little information available due to its small community
  • PySimpleGUI is a simple framework that is easy for beginners and integrates several good frameworks like Qt, Tkinter, and WxPython. However, it is not recommended for production-ready apps
  • DearPyGUI is a more feature-rich framework that has nice documentation and a good tutorial. It has frequent updates that change the functionality of the framework, but the developers are actively involved in responding to users and fixing issues.
  • WX-Python is another framework that is considered “okayish” and has not been updated in over two years.
  • Toga is a new framework that is still in beta, but looks promising and has native support for different platforms
  • Eel is a way to use HTML/CSS/JS to create an application that is executable rather than just a website. It is suggested as an alternative to traditional Python GUI frameworks
  • Several users recommend learning JavaScript to use chart.js with Django to create interactive charts and graphs. Chart.js is JavaScript-based and flexible but requires templates to be written in Jinja files
  • Beeware is another suggestion for creating a desktop application with Python. It supports native widgets and aims to create projects that can span across desktop, mobile, and the web
  • PySimpleGUI and DearPyGUI are noted as being good options to start learning a GUI framework, but it is generally suggested that beginners start with Tkinter.
  • PyGObject (GTK) is mentioned as a working option that is missing from the choices listed and worth considering.

Overall the thread provides a good discussion of several Python GUI frameworks, but different users have different opinions and preferences. Tkinter is considered a great choice for beginners, but its aesthetics are dated. PyQT/PySide is a fully featured choice that can provide great-looking GUIs but licensing issues and availability of tutorials are potential downs

"https://www.pythonguis.com/faq/which-python-gui-library/"

  • Introduction to Python GUI libraries for creating graphical user interfaces (GUIs), which can be used to build desktop front-ends for existing tools or create intuitive touchscreen interfaces
  • Discussion on the most popular Python GUI frameworks with their strengths and installation instructions, including:
    • Tkinter: a simple library with support for standard layouts and widgets, not a framework, cross-platform with outdated widgets on Windows
    • PyQt and PySide: wrappers around the Qt framework, allowing the creation of modern cross-platform interfaces, providing MVC-like data-driven views, multimedia playback, and more advanced graphics, suitable for desktop applications, engineering and scientific software, and games.
      • PySide is licensed with GNU LGPL, and PyQt provides GPL-licensed version only, limiting its use in proprietary applications.
    • PyQt/PySide with QML: using the declarative API of Qt Quick/QML on top of PyQt and PySide, with access to the full Qt framework, for building UIs separately from the business logic, and control it from Python
    • Kivy: a framework primarily written in Python for developing mobile-oriented interfaces, but also allows desktop development, highly customizable look and feel, has a design language called Kv, and is suitable for building games.
  • Pros and cons table comparing the different GUI libraries by the following criteria:
    • Ease of use
    • Advanced features
    • Licensing
    • Look and feel
  • Simple “Hello World!” applications that demonstrate the use of the repositories written using each GUI library
  • Brief discussion of the licensing limitations of PyQt and PySide. LGPL allows the use of PySide in non-GPL applications, while PyQt has commercial and GPL-licensed version and requires an additional commercial license to distribute it as a proprietary application.
  • Additional resources and links to tutorials, books, documentation, and communities for each library.

Overall, the page provides an insightful overview of Python’s most popular GUI libraries, with sufficient information to help readers choose the most suitable one for their purposes, complete with installation instructions and examples of basic functionality.

"What's the best python GUI package for "modern" looking applications and the best way to learn?"

  • A user is looking to create a GUI application using only Python and is seeking recommendations for a modern-looking GUI package that would be easy to learn but provide a sophisticated, professional look similar to Robinhood.
  • Some popular Python GUI packages suggested are PyQT5 Designer, KivyMD + Kivy, wxpython, and PyQt/PySide. PyQT5 Designer was highly recommended but several users mentioned licensing fees as a barrier.
  • Several users also suggested web-based GUI options like Anvil or converting Python code to JavaScript using Transcrypt. One user also described how to use React and Material-UI in conjunction with Python.
  • Some users suggested wxpython or PyQt/PySide for modern-looking desktop applications with native operating systems and flexibility in customizing GUIs. A few users warned of a steep learning curve for some of the suggested packages.
  • Some users said Tkinter, the standard Python GUI library, was outdated and not capable of making modern GUI designs.
  • A user shared their positive experience using DearPyGUI, a simple and efficient GUI library specifically designed for Python. One user recommended looking into gooey, which lets the user easily create a GUI by extending a command-line interface program, and is especially suitable for quickly creating simple GUIs.
  • There was a debate on whether Python is suitable for creating GUI applications. Some users said that Python was not built for GUIs and that it would result in hacky, buggy software. Others disagreed.
  • A few users discussed web frameworks like Django and Flask but did not recommend them for GUI application development.
  • One user recommended creating a GUI by focusing on creating user stories and wireframes first, then building a Python program from those specifications.
  • Some users discussed the importance of adding documentation and testing to a Python GUI application and recommended documenting early and often.

"https://externlabs.com/blogs/python-frameworks-for-desktop-applications/"

  • Python is a potential programming language that can help develop web, mobile, and desktop applications.
  • Python offers various frameworks for different purposes and solutions with integrated tools and functionalities.
  • Frameworks make development focused on application logic rather than common elements; They automate the implementation of tasks.
  • Desktop apps have more potential hardware integration that gives effective results compared to web-based applications.
  • To develop a desktop application, a good framework is needed that can match qualifications and provide the desired performance.
  • Python frameworks for desktop applications can be the best option when it comes to mid-level development due to their advantages.
  • We can differentiate Python desktop application frameworks based on their platform- Desktop Frameworks for Windows App Development, Desktop Framework for macOS, and Cross-Platform Desktop Frameworks.
  • PyQT is an Application and GUI toolkit framework with one of the most powerful and popular Python interfaces.
  • PyQT contains the Qt library and Python programming language that allows developers to create programs by coding and visuals by Qt Designers.
  • PyQT is free-to-use binding software with an open-source widget toolkit QT implemented, Python framework that can help developers build cross-platform, web, desktop, and mobile applications.
  • PyQT is available for all platforms, including Windows, macOS, mobile, and Linux.
  • Tkinter is one of the most popular programming frameworks for Desktop apps and GUIs.
  • Tkinter is named Tkinter because of its simple UI and UX; development beginners can easily use it for Python desktop applications.
  • Tkinter has codes and reference books that make it a popular choice.
  • Tkinter widgets include labels, buttons, and almost everything developers might need in their Python desktop development process and GUI Designing.
  • Tkinter is available for Windows, Mac, Linux, and mobile.
  • Kivy is open-source and an OpenGL ES 2 accelerated framework for building a new user interface for desktop applications.
  • Kivy empowers its users to write and run codes on cross-platforms.
  • Kivy made Python desktop application development fun, easy, and rewarding because of its open-source Python library for application development and GUIs.
  • Kivy comes with 20 widgets that enable developers to design natural UIs.
  • wxPython is open-source with modifiable source codes.
  • wxPython is one of the best Python frameworks for desktop application development with GUIs.
  • wxPython allows developers to create interactive and natural user interfaces.
  • wxPython is known as a Python extension module

"https://geekflare.com/build-desktop-apps-tools/"

  • Desktop applications are developed to serve specific needs of computer users. The desktop applications are designed to work with different operating systems, such as Windows, macOS, and Linux.
  • Developing desktop applications requires a high set of skills. Developers use various tools and frameworks to make their work efficient, reduce errors, and save time.
  • Frameworks and toolkits are essential for developing desktop applications. They are cost-effective, feature-rich, and customizable.
  • The text lists several types of desktop application development frameworks, grouped based on the operating systems they work with:
    • Frameworks for Windows applications:
      • WinForms
      • Windows Presentation Foundation (WPF)
      • Windows Template Studio (WTS)
      • Universal Windows Platform (UWP)
      • Telerik UI for WinForms
    • Frameworks for macOS apps:
      • Xcode
      • Swift Development Language
      • Objective-C
      • Metal
      • Cocos2d-x
    • Cross-platform frameworks:
      • Apache Cordova
      • Progressive Web Apps (PWAs)
      • Xamarin
      • Flutter
      • Electron
      • React Native
  • The text lists Tauri as one of the best frameworks for building excellent desktop applications. Tauri is suitable for building desktop applications for all major operating systems, and it provides a simple, flexible, and reliable development environment.
  • The text also lists Electron as one of the best frameworks for desktop application development. It is a simple and user-friendly desktop application development framework that you can use to create high-performing cross-platform applications. It requires the developers to have expertise in HTML, JavaScript, and CSS to use this platform for building native applications.
  • Neutralinojs is a popular desktop application development framework for beginners. With basic web development knowledge, you can develop lightweight and cross-platform desktop applications on this framework. It comes with a lightweight and portable SDK, which does not require Node.js installation.
  • Xojo is a cross-platform application development framework with a simple drag-and-drop user interface. Developers with basic web development skills can easily use this platform to build desktop applications. The framework has advanced database support, internet protocol compatibility, and graphics assistance.
  • The text lists OS.js as a simple and convenient desktop application development platform, suitable for developers who is competent in JavaScript programming. The framework offers a GUI toolkit, application APIs, and filesystem abstractions.
  • Haxe is a cross-platform desktop application development framework, so it can work on both desktop and handheld devices. It is

"https://habr.com/ru/companies/skillfactory/articles/521838/"

  • Python development environment is important for developers to work on larger projects comfortably.
  • The article provides a detailed list of different IDEs and code editors that can be used for Python development.
  • The article categorizes the IDEs and code editors into two categories: created exclusively for Python development and created for general use with the ability to work with Python.
  • Eclipse with PyDev can be a great choice for those who already have Eclipse installed. It is easy to install PyDev as an extension and has several functionalities available for debugging, autocompletion of code, and interactive Python console.
  • Sublime Text is a popular choice among developers and can be used to edit code in different programming environments. However, it lacks direct support for executing or debugging code from within the editor.
  • Atom is an open-source software that works on all operating systems. It is a lightweight editor that can provide good results for Python development, but it requires additional work to make it work for debugging code.
  • GNU Emacs is another popular editor, able to customize its functionality using the form of programming, Lisp. It is available for free on every platform and is preferred by some developers who are familiar with Lisp. However, configuring it may require expertise in Lisp programming.
  • The article lists some common features that are essential to the development environment, including support for saving and reloading files, debugging, syntax highlighting, among others.
  • Python IDEs should have debugging support, which lets them step through the code and examine data to improve coding efficieny.
  • Syntax highlighting shows syntax errors to the developer while writing code, making it easier for them to correct the mistakes.
  • The article advises that Python IDEs should support autocompletion features, which makes it easier for developers to code without missing any critical syntax while typing.
  • While working on Python projects, developers should use a source code management system (SCM) as they offer an optimal way to check previous changes made to the code.
  • Lightweight editors are more efficient than IDEs as they reduce the disk space the system consumes.
  • The article emphasizes that factors such as the type of project, programming competence, and cost should be taken into consideration while selecting an IDE or editor.
  • Python IDEs or editors with better features generally require more space compared to normal editors.
  • The article lists pros and cons of each IDE/editor which helps developers to select an appropriate one.
  • Some IDEs/editors may be difficult to configure and understand by beginners and may require expertise, which may act as a hindrance for novices in

💭  Looking into

Comparison of development tools for complex desktop applications

💭  Looking into

Comparison of popular development tools for desktop applications using Python