Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad

introduction

J'ai acheté l'iPad Air 4 récemment sorti. Le but de l'utilisation est principalement de créer des mémos manuscrits, mais dans de nombreux cas, les mémos sont créés lors du calcul. Si le mémo manuscrit n'est que du texte et des chiffres, vous pouvez le saisir avec un éditeur de texte sans avoir à vous soucier de l'écrire à la main, mais si vous avez besoin d'un diagramme explicatif, l'écriture manuscrite est toujours pratique. Lorsque j'avais besoin de calculer, j'avais l'habitude de démarrer Python sur iMac et de le laisser calculer tout en faisant des croquis et des mémos dessinés à la main sur iPad, mais il est difficile de démarrer iMac même si j'ai un iPad. Pas intélligent. Donc, je n'en ai pas entendu parler récemment, mais j'ai décidé d'utiliser Pythonista 3, que j'avais acheté pour l'iPad mini 4.

Pythonista 3 inclut numpy et matplotlib, qui fonctionnent presque certainement. Vous devez penser que d'autres bibliothèques telles que scipy et pandas ne peuvent pas être utilisées. Pour cette raison, un code qui n'utilise que numpy et matplotlib est pratique même pour des calculs compliqués. Il semble que vous puissiez également utiliser l'interface graphique, mais je ne l'ai jamais utilisé moi-même auparavant, j'ai donc essayé de créer un programme de calcul simple que j'utilise fréquemment dans un style d'application afin qu'il puisse être utilisé sur l'iPad. (Le fait est que je suis heureux d'acheter l'iPad Air 4, donc je vais faire diverses choses avec.)

Que fais tu

Ce que je fais, c'est réécrire le "programme pour trouver l'iso-profondeur des cours d'eau raides" sur mon Mac pour Pythonista afin qu'il fonctionne avec l'interface graphique. Le code original a été publié dans "Hatena" ci-dessous.

https://damyarou.hatenablog.com/entry/2020/10/23/073643

Puisque ce programme résout des équations non linéaires, le programme Mac utilise scipy, mais Pythonista ne peut pas utiliser scipy, donc la partie dichotomie pour résoudre les équations non linéaires est réécrite par elle-même. De plus, c'est mon premier défi, mais j'ai essayé de le terminer en utilisant l'interface graphique comme une application.

Le résultat de l'exécution est comme indiqué dans l'image ci-dessous. Entrez les données dans les quatre carrés supérieurs et appuyez sur le bouton `` Exécuter '', et le résultat sera affiché dans le carré inférieur.

IMG_0004.jpeg

J'ai fait référence aux sites suivants lors de la création du programme.

Dans Pythonista 3, si vous spécifiez la programmation de l'interface utilisateur, vous aurez deux fichiers. Dans l'image ci-dessous. Vous pouvez voir les fichiers py_uniflow.py et` `` py_uniflow.pyui. "Xxx.py" est un programme qui écrit du code et "xxx.pyui" est un fichier qui définit la disposition et les caractéristiques de l'interface utilisateur.

IMG_0003.jpeg

Une liste des objets pouvant être placés s'affiche en appuyant sur la marque + entourée du carré supérieur gauche sur `` py_uniflow.pyui '' qui définit le placement et les caractéristiques de l'interface utilisateur, alors sélectionnez celui que vous souhaitez utiliser à partir de là. sélectionner.

IMG_0007.jpeg

Ce programme utilise les quatre types d'objets suivants.

  1. label
  2. textfield
  3. button
  4. textview

Pour l'étiquette et le butan, py_uniflow.Voici une image de la valeur caractéristique spécifiée dans pyui.


```textfield```Quand```textview```Ajuste simplement la position et la taille, de sorte que la photo est omise.

 ![IMG_0005.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129300/050b4847-d387-186d-1498-0d8ea9c0e10e.jpeg)

 ![IMG_0006.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129300/52a2c7b4-adb0-0a9e-2048-3af40521b09b.jpeg)


 Je vais terminer le programme sur l'iPad comme ça.


## code


#### **`py_uniflow.Le code complet pour py est ci-dessous. Fonction def clic_Tout le traitement principal est emballé dans le bouton.`**
```Le code complet pour py est ci-dessous. Fonction def clic_Tout le traitement principal est emballé dans le bouton.



```python
# Calculation of normal depth
import ui
import numpy as np


def cal_hc(q,b,cs):
    # critical depth
    g=9.8
    hc=(q**2/g/b**2/cs)**(1/3)
    return hc


def func(h,q,b,n,sn):
    f=q-b*h/n*(b*h/(b+2*h))**(2/3)*sn**(1/2)    
    return f    


def bisection(q,b,n,sn,ha,hb):
    for k in range(100):
        hi=0.5*(ha+hb)
        fa=func(ha,q,b,n,sn)
        fb=func(hb,q,b,n,sn)
        fi=func(hi,q,b,n,sn)
        if fa*fi<0: hb=hi
        if fb*fi<0: ha=hi
        #print(fa,fi,fb)
        if np.abs(hb-ha)<1e-10: break
    return hi

  
def click_button(sender):
    tf1=v['textfield1']
    tf2=v['textfield2']  
    tf3=v['textfield3']
    tf4=v['textfield4']
    q=float(tf1.text) # discharge
    b=float(tf2.text) # channel width
    n=float(tf3.text) # Manning's roughness coefficient
    i=float(tf4.text) # invert gradient
    
    theta=np.arctan(i)
    sn=np.sin(theta)
    cs=np.cos(theta)

    ha=0.0 # lower initial value for bisection method
    hb=10.0 # upper initial value for bisection method
    hn=bisection(q,b,n,sn,ha,hb)
    vn=q/b/hn
    hc=cal_hc(q,b,cs)

    # hn: normal depth
    # vn: flow velocity 
    # hc: critical depth
    tv=v['textview1']
    ss='ang={0:.3f} deg.\n'.format(np.degrees(theta))
    ss=ss+'hn={0:.3f} m\n'.format(hn)
    ss=ss+'vn={0:.3f} m/s\n'.format(vn)   
    ss=ss+'hc={0:.3f} m'.format(hc)
    tv.text=ss


v = ui.load_view()
v.name='Uniform flow'
v.present('sheet')

c'est tout

Recommended Posts

Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez CI le code python poussé sur GitHub.
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Essayez d'utiliser le module de collections (ChainMap) de python3
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser l'API DropBox Core avec Python
Réfléchissez à la programmation de Python sur votre iPad
Essayez d'utiliser le capteur de température (LM75B) avec Raspeye.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'API Twitter
Essayez d'utiliser OpenCV sur Windows
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API PeeringDB 2.0
Diffusion sur LINE en utilisant python
Essayez d'utiliser le framework Web Python Django (2) - Regardez setting.py
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Essayez d'utiliser Pillow sur iPython (partie 1)
Essayez le SDK Python LINE Pay
Essayez d'utiliser Pillow sur iPython (partie 2)
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'utiliser ArUco avec Raspberry Pi
Essayez Ajax sur la page Django
Étude sur Tokyo Rent en utilisant Python (3-2)
Remarques sur l'installation de Python à l'aide de PyEnv
Essayez d'utiliser Pillow sur iPython (partie 3)
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
Extraire le fichier targz en utilisant python
Essayez d'utiliser l'API d'action de Python argparse
Notes sur l'utilisation de rstrip avec python.
Installer Python sur CentOS à l'aide de Pyenv
Étude sur Tokyo Rent en utilisant Python (3-3)
Sakura utilisant Python sur Internet
Remarques sur l'utilisation de matplotlib sur le serveur
Essayez d'utiliser LeapMotion avec Python
Installez Python sur CentOS en utilisant pyenv
Essayez d'utiliser Amazon DynamoDB à partir de Python
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Essayez de vous connecter automatiquement à Netflix en utilisant python sur votre PC
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Essayez une formule utilisant Σ avec python
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser Bash sur Windows 10 2 (installation de TensorFlow)
Derrière le flyer: utiliser Docker avec Python
Essayez d'utiliser le LiDAR de 6 $ de réduction (Camsense X1)
Ajustez le module ui de pythonista3
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Dialogflow (anciennement: API.AI) Essayez d'utiliser le SDK Python #dialogflow