Python library that makes it easy to have a Qt GUI with a matplotlib widget made in QtDesigner implemented on a script.
Project description
EasyPlotGUI
Python library that makes it easy to have a Qt GUI with a matplotlib widget made in QtDesigner implemented on a script.
Easy implementation process
- Clone
EasyPlotGUI
to your project's folder - Create GUI on QtDesigner based on
mpl_gui.ui
- Compile your ui to Python with
pyuic5 ./your_file.ui -o ./your_ui.py
- Import
EasyPlotGUI
as parent class (see example of usage) - Overwrite
update_graph()
with graph to be generated; andupdate_interactivity()
with GUI elements interaction
Check out the example on ./example.py
.
QtDesigner
Installation with pip
QtDesigner is a Graphical tool for creating Guided User Interfaces that can either be downloaded with Qt Creator or with the library pyqt5-tools
.
Lightest and fastest way to get QtDesigner is to install pyqt5-tools
. For this, execute:
pip install pyqt5-tools
After the installation, the designer.exe
executable should be found in:
Python3X\Lib\site-packages\pyqt5_tools\Qt\bin\designer.exe
I suggest creating a shortcut for it, for easier execution or adding the folder to the path, so that it can be called as just designer
from the terminal/shell.
UI with Matplotlib Creation
Use the mpl_gui.ui
file on QtDesigner as a starting point for the GUI with Matplotlib integrated. Just keep in mind that the names of every object added to the User Interface are those you will have to call on the Python script.
The only important thing in this .ui file is the MplWidget object. The MplWidget is the widget created to link matplotlib to Qt. Do not delete it.
Example of Usage
from easy_gui import EasyPlotGUI
import example_ui
import numpy as np
class MyClass(EasyPlotGUI):
def __init__(self):
super().__init__(example_ui)
self.window_title = "My GUI Name"
self.icon_path = "logo.png"
# initialize Graph variables for first plot
self.f = 1
def update_interactivity(self):
self.ui.mySlider.valueChanged.connect(self.change_frequency)
def change_frequency(self):
self.f = self.ui.mySlider.value()
self.update_graph()
def update_graph(self):
x = np.linspace(0, 1)
y = np.sin(2*np.pi*self.f*x)
self.ax.clear()
self.ax.plot(x, y, label="Sine")
self.ax.legend()
self.ax.set_title('Sine Wave')
self.draw()
# calling it
if __name__ == "__main__":
my_gui=MyClass()
my_gui.show_gui()
Test Example
gui = EasyPlotGUI()
gui.window_title="Window Title"
gui.icon_path="./logo.png"
gui.show_gui()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for EasyPlotGUI-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9e85cb2c534ea2aba3d09948c71b0da160fb41868c5abcdde2da3581ddf6e2f |
|
MD5 | 5d07ca3df84e513953bce340d4c1ab78 |
|
BLAKE2b-256 | 8711ccb3d9a9b5ce3c4a98eaa0eef8a565bd273f60f9e75bbe3ed169110ee21c |