![]() |
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.
![]() |
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.
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!