rawpython / remi

Python REMote Interface library. Platform independent. In about 100 Kbytes, perfect for your diet.
Apache License 2.0
3.48k stars 401 forks source link

GUI on Remy for mobile devices #495

Closed tellts closed 1 year ago

tellts commented 1 year ago

Please give examples on how to use Remy to create apps for mobile devices.

dddomodossola commented 1 year ago

Hello @tellts ,

Here is an example for you. In the following code the application handles the window resize to adapt the layout on different screen resolutions. To verify its behaviour just resize the browser screen and you will see the layout change.

import remi.gui as gui
from remi import start, App

class MyApp(App):
    def main(self):
        #creating a container GridBox type
        self.main_container = gui.GridBox(width='100%', height='100%', style={'margin':'0px auto'})

        label = gui.Label('This is a label')
        label.style['background-color'] = 'lightgreen'
        button = gui.Button('A button', height='100%')

        text = gui.TextInput()
        #defining layout matrix, have to be iterable of iterable
        self.main_container.define_grid(['ab',
                                    'ac'])
        self.main_container.append({'a':label, 'b':button, 'c':text})
        #setting sizes for rows and columns
        self.main_container.style.update({'grid-template-columns':'10% 90%', 'grid-template-rows':'10% 90%'})

        # returning the root widget
        return self.main_container

    def onpageshow(self, emitter, width, height):
        self.onresize(emitter, width, height)

    def onresize(self, emitter, width, height):
        #redefining grid layout
        if float(width)<float(height):
            self.main_container.define_grid(['c','a','b'])
            self.main_container.style.update({'grid-template-columns':'100%', 'grid-template-rows':'33% 33% 33%'})
        else:
            self.main_container.define_grid(['ab',
                                    'ac'])
            self.main_container.style.update({'grid-template-columns':'10% 90%', 'grid-template-rows':'10% 90%'})

if __name__ == "__main__":
    # starts the webserver
    start(MyApp, address='0.0.0.0', port=0, start_browser=True)
tellts commented 1 year ago

Thanks you. Can you please tell me how to run this sample code on a mobile device?

dddomodossola commented 1 year ago

The easiest way to run python on Android is using the QPython app. Of course remi can be used in any python capable device.

tellts commented 1 year ago

I have installed the Chaquopy https://chaquo.com/chaquopy/ . https://play.google.com/store/apps/details?id=com.chaquo.python.demo3 . print(os.popen('echo "hello"').readline()) import runpy runpy.run_path("a1.py") x = runpy.run_path("a1.py") print('x') This is a free environment for running Python programs. Qpython does not work for me, since the tablet with Android 4.2 with a diagonal of about 10.

tellts commented 1 year ago

These are 3 examples of how the code is run in this environment. Line breaks have been removed between commands.

dddomodossola commented 1 year ago

Does it provide the possibility to install pypi packages? If so you can install remi and run your app

tellts commented 1 year ago

If I understand correctly, this is not the way to do it. But I can ask the support service how to install the program from the distribution. https://chaquo.com/pypi-7.0/

https://chaquo.com/pypi/

tellts commented 1 year ago

Hello. Could you tell me what questions to ask correctly or ask there yourself, since I myself can’t do it quite professionally? https://github.com/chaquo/chaquopy/issues/689

dddomodossola commented 1 year ago

Hello @tellts , I think that they understood your question. They told you that a configuration file has to be modified inside your Android device. I suppose you should use a text editor. After editing the configuration file, you should be able to do a pip install remi (maybe the chaquopy provides a console to write this command).

tellts commented 1 year ago

If I am not mistaken, this must be done in the Android Studio by installing a special plugin https://chaquo.com/chaquopy/doc/current/android.html (this is written at the very bottom of the page). Another example is here https://chaquo.com/chaquopy/doc/current/faq.html#faq-mirror

dddomodossola commented 1 year ago

I think it is correct.

I suggest you to use QPython, it is easy to use and full featured.

tellts commented 1 year ago

Qpython does not install on older tablets with Android 4.x

dddomodossola commented 1 year ago

Do you really need to run the python script on the mobile device? Consider that remi is a Web Gui, it means that you can run the App on another device (a PC for example) and you can see thr interface on other devices in the network

tellts commented 1 year ago

Hello. Yes, I wanted to be able to make programs in Python with the GUI, but at the same time, so that they were autonomous from the Internet.

dddomodossola commented 1 year ago

Unfortunately I don't know about other solutions to run python on Android