Sunday, November 3, 2024

Programming GUI: Tkinter File Mover V.1.0.0

File Mover V.1.0.0

    Hello, night owls! It's nice to see you again, and I hope you’re doing well and staying healthy. Today’s demo is about GUI programming using Tkinter, and it’s called File Mover. This simple program automatically moves files from various folders into one parent folder with just one click.

Let's dive into the demo!


Program Design

This program follows the standard MVC (Model-View-Controller) pattern. I'm aware that the MVC design pattern is very helpful for organizing the code into a more maintainable structure.

MVC design pattern

With the MVC pattern, the code becomes modular and easy to maintain. The GUI is handled in the views, the data storage is managed in the models, and the controller serves as an API for both the views and the models, along with the custom module I created.


Models And Views

The Model, also known as the storage model, is where I store essential data, methods for retrieving configurations, and file handling functions. If the program uses a database, this model handles data retrieval to serve the program's needs.

Models where the configuration and file handle located
 
The View represents the main user interface, whether graphical (GUI) or text-based. I generally prefer a text-based interface due to its simplicity and single focus on code logic. With a GUI, the focus is split between designing the interface and implementing core functionality. A text-based approach allows me to concentrate fully on the program’s core logic without the added layer of GUI complexity.
 
The code that defines the graphical user interface (GUI) of the program

The primary user interface of the program

Although a text-based interface offers simplicity and allows for a more focused approach to coding, the advantage of a GUI is that it is generally more user-friendly and widely accepted by most computer users. GUIs make applications accessible to a broader audience by providing a more intuitive experience.


Controllers


Controllers that manages the logic and controls the flow of the program

The data flow is determined and managed by the controllers. This part of the program regulates data storage and distributes it to all modules within the application, functioning as an internal API that facilitates communication between storage components and other modules.


Custom Widgets Tailored To Suit The Program’s Design

When it comes to design, the standard or native components may not always meet our specific needs. That’s why, in designing a GUI program, I needed to create or customize components such as custom warning, error, and info boxes, as well as top-level menus, to better align with the program's design goals.

Customized Widgets

Custom widgets allow me to control their appearance and functionality, adding features that standard widgets may lack.


Testing The Program

To simplify the demonstration, I will provide a video demo for easy review.

Demo video File Mover Version 1.0.0

End

As always, thank you for visiting my blog and reviewing my work. I hope you have a great day, and I look forward to seeing you in the next post!