kivy android app - open text file - button tap

203 views
Skip to first unread message

MM58

unread,
Jun 6, 2019, 6:45:39 PM6/6/19
to Kivy users support
Hi there....this is my first post and just to be clear, I am new to this and self-taught (hobby) programmer.
Anyway, I am developing an app for scientific/engineering purposes and I chose kivy as GUI to use on Android. I'm using Linux, Python and buildozer to deploy on android phone. I had several issues with kivy (and would have several comments, like matplotlib and scipy not supported, limits on garden graph, etc.), but I will focus just on my final problem (which I think would be easier to solve from someone expert).
I want to print all my variable results (don't care them to be strings) in a text file and execute that file once a button is tapped in the app.

In summary:
    import numpy as np
    .
    .
    .
        def results(self):
       
            a = np.array([1,2,3,4])
            np.savetxt('results.txt', a, fmt="%s")
            # command here which will open the saved file upon calling this function from kv file / button tap / release

I have a button in kv file which calls this root.results() upon on_release:
Ive managed to make it work using webbrowser running the app on Linux, but it crashes when running on android.

How can this file be executed on my phone once the button is tapped ?

it can open in a browser or any other application I have on the phone to open txt files, it doesn't matter.

Thanks :)
MM

Alexander Taylor

unread,
Jun 7, 2019, 7:02:28 PM6/7/19
to Kivy users support
When you say 'execute', it sounds like you mean you want to open the file in some kind of file viewer. Is that correct? 'Execute' would normally mean to run the file as code.

If I understood right, the best way to do this on Android is to create and run an intent using pyjnius, with the text file as the target. This will trigger a normal Android system prompt to let the user select an appropriate application.

We have a wrapper to do this using webbrowser.open on Android, but for this to work you'll need to `import android` in your code. This triggers the Android webbrowser handling to be set up.

Also, matplotlib support was recently added to python-for-android.

Marcello Musarra

unread,
Jun 7, 2019, 7:30:07 PM6/7/19
to kivy-...@googlegroups.com
Hi Alexander,

Thanks for your reply!! I ended up solving the issue in a different way, here some general comments from me (my 1st release is almost finished):

1. I tried first to use matplotlib and eventually installed matplotlib on buildozer garden requirements, it worked fine on desktop, but couldn't manage to debug and deploy on phone. several packages, libraries were missing, I've tried to add them manually, until a point the error was more complex. I've started this app about a month ago, so I thought I had the most updated version of everything. I'll check that out.

2. I managed successfully to use web browser for url and email, at button tap from the app. The problem to launch the file, apparently, is how to save the file. On desktop i used numpy.savetx, because data contains arrays, and it was saved in the same py file directory. On the phone, the app crashes once button is tapped. Your solution sounds great I believe, once I figure how to save the file on the phone. I ended up creating a scroll view label and "pasting" the data there, all inside app. Right now, there's no way to "export" the data. Another issue was the format, I couldn't reproduce the prompt terminal shell (e.g. print output) to the label. That means the left alignment of the 2nd 3rd etc. columns are not left aligned in kivy but look good on terminal.

3. I can't insert scatter plot with graph, that's a really a problem for me. Also formatting the plots I found very painful.

4. colors, both in graph and labels are not that good, they vary whether I run the script on desktop or the phone and I can't set up easily label background, just with that canvas workaround.

5. I was not able to central align or vertical mid align text in textinput boxes

6. apparently is not possible to merge a button or a label into two "columns" in a grid layout, which requires to re set up the whole framework and can become very complex.

I stop here. I want to stress that I liked very much the kivy application and I'm happy with the result. I guess the struggle is part of the way. My comments are just to share my experience, which is very small.
Anyway, I'm happy with it and might finally publish its 1st release this weekend in Google.Play ;))
Cheers
Marcello




--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-users+...@googlegroups.com.
To post to this group, send email to kivy-...@googlegroups.com.
Visit this group at https://groups.google.com/group/kivy-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/kivy-users/8b05fc9f-6b2a-47bc-b3df-512dfe254bb2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Alexander Taylor

unread,
Jun 8, 2019, 7:26:43 AM6/8/19
to kivy-...@googlegroups.com


1. I tried first to use matplotlib and eventually installed matplotlib on buildozer garden requirements, it worked fine on desktop, but couldn't manage to debug and deploy on phone. several packages, libraries were missing, I've tried to add them manually, until a point the error was more complex. I've started this app about a month ago, so I thought I had the most updated version of everything. I'll check that out.

You probably did have the most updated version of everything at the time, the matplotlib recipe was actually merged just 5 days ago!


2. I managed successfully to use web browser for url and email, at button tap from the app. The problem to launch the file, apparently, is how to save the file. On desktop i used numpy.savetx, because data contains arrays, and it was saved in the same py file directory. On the phone, the app crashes once button is tapped. Your solution sounds great I believe, once I figure how to save the file on the phone. I ended up creating a scroll view label and "pasting" the data there, all inside app. Right now, there's no way to "export" the data. Another issue was the format, I couldn't reproduce the prompt terminal shell (e.g. print output) to the label. That means the left alignment of the 2nd 3rd etc. columns are not left aligned in kivy but look good on terminal.

So what is the real question here, how to save the file or how to view the file in another program? If you just want to save the file, that's easier and you can use normal python mechanisms. I don't know why your numpy call is failing, but you can debug that with adb logcat: https://kivy.org/doc/stable/guide/android.html#debugging-your-application-on-the-android-platform - it's possible there is a bug with the compiled numpy, if so we can look into that.

For printing output, make sure to use a monospaced font, that should take care of alignment.


You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/CVaflFZKxD4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-users+...@googlegroups.com.

To post to this group, send email to kivy-...@googlegroups.com.
Visit this group at https://groups.google.com/group/kivy-users.

Marcello Musarra

unread,
Jun 8, 2019, 7:44:35 AM6/8/19
to kivy-...@googlegroups.com
That's amazing news Alexander, thanks for let me know. Do I need to do something to update?

The question is:
I have an array with 3 columns which I paster in a kivy Label, scroll view. Actually, I wanted that to be in a TextFile format and upon tapping the button 'print', would ask the user to choose the software and open the file.

thanks again for your help ;)

Elliot Garbus

unread,
Jun 8, 2019, 9:59:59 AM6/8/19
to Kivy users support
5. I was not able to central align or vertical mid align text in textinput boxes

6. apparently is not possible to merge a button or a label into two "columns" in a grid layout, which requires to re set up the whole framework and can become very complex.
It is true you can not merge a 2 cells of a GridLayout, you can archive the same result by using nested BoxlLayouts.  This actually can become intuitive but requires practice.   When doing an initial Layout, I find it is often easiest just to use Buttons in each cell, so the layout is easy to visualize. Then replace the buttons with the desired widget.

The UI below is constructed primarily of nested BoxLayouts.

HedraEdit Screenshot.PNG


To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/CVaflFZKxD4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.

Marcello Musarra

unread,
Jun 8, 2019, 7:17:08 PM6/8/19
to kivy-...@googlegroups.com
Hi Alexander, me again. Following up:

- I tried to run logcat with 'android deploy run logcat' to understand better, but it runs indefinitely and can't do anything. dont know what to do now honestly.
- I've tried to debug and build the apk importing matplotlib and adding the same to requirements on buildozer. It builds the apk, runs on desktop, but when I deploy on the phone it crashes. same issue as before. Do I need to do something to update or so ?
- I've changed the font name to a monospaced and that causes the action to find a 'ttf' file. It runs perfectly on desktop, and again, once I'm in the app environment, it crashes once the button is pressed. Shall I included that ttf font file name in requirements ? how do I do that ?

Thanks again for your help;)

On Sat, Jun 8, 2019, 1:26 PM Alexander Taylor <alexander...@gmail.com> wrote:

Alexander Taylor

unread,
Jun 8, 2019, 8:00:22 PM6/8/19
to kivy-...@googlegroups.com

You need to read the logcat log just as you would read the terminal output on the desktop. If your app has actually started up before crashing (as it has here), you can pull out only the lines containing the word `python` and you should see your program's normal output including the python traceback when it crashes. You can do e.g. `adb logcat | grep python`, or read the logcat docs to see the specific syntax for this.

For matplotlib, you'll still need to update your build to use the latest python-for-android. The simplest way is to delete the .buildozer folder in your app dir and run the build again, it will re-fetch python-for-android.

About the crashes, it's little use to know that the app crashed, you must read the traceback in the logcat. Just as on the desktop, there will be a specific error there to follow up, e.g. it may indicate that your ttf file is not present which would indicate you need to add it to the list of files included in your app (there are options for this in the buildozer.spec).

Marcello Musarra

unread,
Jun 9, 2019, 6:44:35 AM6/9/19
to kivy-...@googlegroups.com
Hi Alex, I did as you said, deleted .buildozer and tried again, doing:
1. apt-get install libfreetype6-dev
2. apt-get install libpng12-dev
3. apt-get install pkg-config
4. started buildozer and got this error message below

Not sure why I got error with numpy now, but my buildozer.spec has:

requirements = python3,kivy,numpy,matplotlib
source.include_exts = py,png,jpg,kv,atlas, ttf

I include this 'ttf' source file in order to try to include the monospaced font, not sure if I am doing correctly.

Your help is much appreciated.
thanks,
M

[INFO]:    -> running python setup.py build_ext -v
           working: distutils.errors.DistutilsErException in thread background thread for pid 28966:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 1540, in wrap
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 2459, in background_thread
    handle_exit_code(exit_code)
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 2157, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 815, in handle_command_exit_code
    raise exc
ErrorReturnCode_1:

  RAN: /home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/python setup.py build_ext -v

  STDOUT:
============================================================================
Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [3.0.3]
                python: yes [3.7.1 (default, Jun  9 2019, 12:14:20)  [GCC
                        7.4.0]]
              platform: yes [linux]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [not found. pip may install it below.]
      install_requires: yes [handled by setuptools]
                libagg: yes [pkg-config information for 'libagg' could not
                        be found. Using local copy.]
              freetype: yes [version 2.8.1]
                   png: yes [version 1.6.34]
                 qhull: yes [pkg-config information for 'libqhull' could not
                        be found. Using local copy.]

OPTIONAL SUBPACKAGES
           sample_data: no  [skipping due to configuration]
              toolkits: yes [installing]
                 tests: no  [skipping due to configuration]
        toolkits_tests: no  [skipping due to configuration]

OPTIONAL BACKEND EXTENSIONS
                   agg: yes [installing]
                 tkagg: no  [Disabled by patching during Android build]
                macosx: no  [skipping due to configuration]
             windowing: no  [skipping due to configuration]

OPTIONAL PACKAGE DATA
                  dlls: no  [skipping due to configuration]

Download error on https://pypi.org/simple/numpy/: unknown url type: https -- Some packages may not be found!
Couldn't find index page for 'numpy' (maybe misspelled?)
Download error on https://pypi.org/simple/: unknown url type: https -- Some packages may not be found!
No local packages or working download links found for numpy==1.15.1

Traceback (most recent call last):
  File "setup.py", line 297, in <module>
    cmdclass=cmdclass,
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/__init__.py", line 144, in setup
    _install_setup_requires(attrs)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/__init__.py", line 139, in _install_setup_requires
    dist.fetch_build_eggs(dist.setup_requires)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/dist.py", line 724, in fetch_build_eggs
    replace_conflicting=True,
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 782, in resolve
    replace_conflicting=replace_conflicting
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 1065, in best_match
    return self.obtain(req, installer)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 1077, in obtain
    return installer(requirement)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/dist.py", line 791, in fetch_build_egg
    return cmd.easy_install(req)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/command/easy_install.py", line 673, in easy_install
    raise DistutilsError(msg)
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('numpy==1.15.1')


  STDERR:


Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 1186, in <module>
    main()
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 1180, in main
    ToolchainCL()
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 663, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 152, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 205, in build_dist_from_args
    args, "ignore_setup_py", False
  File "pythonforandroid/build.py", line 555, in build_recipes
  File "pythonforandroid/recipe.py", line 883, in build_arch
  File "pythonforandroid/recipe.py", line 938, in build_compiled_components
  File "pythonforandroid/recipe.py", line 895, in build_compiled_components
  File "pythonforandroid/logger.py", line 178, in shprint
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 863, in next
    self.wait()
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 792, in wait
    self.handle_command_exit_code(exit_code)
  File "/usr/local/lib/python2.7/dist-packages/sh-1.12.14-py2.7.egg/sh.py", line 815, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1:

  RAN: /home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/python setup.py build_ext -v

  STDOUT:
============================================================================
Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [3.0.3]
                python: yes [3.7.1 (default, Jun  9 2019, 12:14:20)  [GCC
                        7.4.0]]
              platform: yes [linux]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [not found. pip may install it below.]
      install_requires: yes [handled by setuptools]
                libagg: yes [pkg-config information for 'libagg' could not
                        be found. Using local copy.]
              freetype: yes [version 2.8.1]
                   png: yes [version 1.6.34]
                 qhull: yes [pkg-config information for 'libqhull' could not
                        be found. Using local copy.]

OPTIONAL SUBPACKAGES
           sample_data: no  [skipping due to configuration]
              toolkits: yes [installing]
                 tests: no  [skipping due to configuration]
        toolkits_tests: no  [skipping due to configuration]

OPTIONAL BACKEND EXTENSIONS
                   agg: yes [installing]
                 tkagg: no  [Disabled by patching during Android build]
                macosx: no  [skipping due to configuration]
             windowing: no  [skipping due to configuration]

OPTIONAL PACKAGE DATA
                  dlls: no  [skipping due to configuration]

Download error on https://pypi.org/simple/numpy/: unknown url type: https -- Some packages may not be found!
Couldn't find index page for 'numpy' (maybe misspelled?)
Download error on https://pypi.org/simple/: unknown url type: https -- Some packages may not be found!
No local packages or working download links found for numpy==1.15.1
Traceback (most recent call last):
  File "setup.py", line 297, in <module>
    cmdclass=cmdclass,
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/__init__.py", line 144, in setup
    _install_setup_requires(attrs)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/__init__.py", line 139, in _install_setup_requires
    dist.fetch_build_eggs(dist.setup_requires)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/dist.py", line 724, in fetch_build_eggs
    replace_conflicting=True,
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 782, in resolve
    replace_conflicting=replace_conflicting
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 1065, in best_match
    return self.obtain(req, installer)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/pkg_resources/__init__.py", line 1077, in obtain
    return installer(requirement)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/dist.py", line 791, in fetch_build_egg
    return cmd.easy_install(req)
  File "/home/musarra/Documents/pyprojects/uface/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/native-build/Lib/site-packages/setuptools/command/easy_install.py", line 673, in easy_install
    raise DistutilsError(msg)
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('numpy==1.15.1')









Marcello Musarra

unread,
Jun 9, 2019, 6:53:09 AM6/9/19
to kivy-...@googlegroups.com
My guess is that the download link has a bug

Instead of

Marcello Musarra

unread,
Jun 10, 2019, 2:03:42 PM6/10/19
to kivy-...@googlegroups.com
HI there again....sorry to insist in such few time, but is there any quick solution for this issue?

cheers,
MM

Alexander Taylor

unread,
Jun 10, 2019, 5:02:02 PM6/10/19
to kivy-...@googlegroups.com

I think hostpython3 is maybe missing openssl for some reason. I'm not sure what's going on, or what is different to my own environment where it works fine. I've opened an issue at https://github.com/kivy/python-for-android/issues/1859 to look into it. I'm afraid there is no ETA for a fix right now.

Marcello Musarra

unread,
Jun 10, 2019, 5:05:16 PM6/10/19
to kivy-...@googlegroups.com
Got it, well thanks for the feedback and if you come across to any solution, please let me know. My knowledge still limited but would be glad to help in anything I can.

Cheers,
M

Robert Flatt

unread,
Jun 10, 2019, 11:26:52 PM6/10/19
to Kivy users support

unknown url type: https
 
This error sometimes about a Python install issue (Google this message).

I notice Buildozer is using Python2.7 (and the Android app uses Python3 - I think this is OK)
An easy thing to try would be to set Python3 as the default Python on the computer, then run Buildozer (clean first)
Perhaps a different Python version will not have the issue?
(Presumably the app was tested under Python3 and pip3 was able to get the packages....)

Something to try (or not!)
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/CVaflFZKxD4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.

To post to this group, send email to kivy-...@googlegroups.com.
Visit this group at https://groups.google.com/group/kivy-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/kivy-users/b63bc2d9-c73c-1df1-dbba-bd13679707d6%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/CVaflFZKxD4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.

To post to this group, send email to kivy-...@googlegroups.com.
Visit this group at https://groups.google.com/group/kivy-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/kivy-users/0a6f669d-e139-05f1-f844-eed2aa6608ff%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/CVaflFZKxD4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Kivy users support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kivy-...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages